- 博客(74)
- 资源 (8661)
- 收藏
- 关注
原创 《高效学习OpenGL》 之 分配纹理坐标 glTexCoord2f(), glTexParameter()
glTexCoord2f(0.0, 0.0); glVertex3f(1.0, -1.0, 0.0); glTexCoord2f(0.0, 1.0); glVertex3f(1.0, 1.0, 0.0); glTexCoord2f(1.0, 1.0); glVertex3f(2.41421, 1.0, -1.41421); glTexCoord2f(1.0, 0.0); glVe
2014-02-28 15:40:39 2891 1
原创 《高效学习OpenGL》 之 纹理函数(设置绘图模式) glTexEnv()
设置当前的纹理函数: glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); void glTexEnvf (GLenum target, GLenum pname, GLfloat param); //target必须是GL_TEXTURE_FILTER_CONTROL或GL_TEXTURE_ENV //如
2014-02-28 14:26:09 3430
原创 《高效学习OpenGL》 之 常驻纹理工作集 glAreTexturesResident(), glPrioritizeTextures()
GLboolean glAreTexturesResident (GLsizei n, const GLuint *textures, GLboolean *residences); //查询n个纹理对象的纹理常驻状态,这些纹理对象的名称由textures指定,函数返回的常驻状态保存在residences数组中 void glPrioritizeTextures (GLsizei n, co
2014-02-28 11:58:51 1830
原创 《高效学习OpenGL》 之 纹理对象 glGenTextures(),glIsTexture(),glBindTexture(),glDeleteTextures()
命名纹理对象: void glGenTextures (GLsizei n, GLuint *textures); //在数组textures中返回n个当期未使用的值,表示纹理对象的名称 //零作为一个保留的纹理对象名,它不会被此函数当做纹理对象名称而返回判断一个纹理名称是否处于实际使用中: GLboolean glIsTexture (GLuint texture
2014-02-28 11:25:08 11578
原创 《高效学习OpenGL》 之 过滤
指定放大和做小的过滤方法 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); //第二个和第三个参数可以是下图值
2014-02-27 17:10:55 1311
原创 《高效学习OpenGL》 之 mipmap glGenerateMipmap(),gluBuild2DMipmaps(),gluBuild2DMipmapLevels()
3.1后的版本: int glGenerateMipmap(GLenum target); //为与target相关联的纹理图像生成一组完整的mipmap,后的版本: gluBuild2DMipmaps() int gluBuild2DMipmaps ( GLenum target, GLint components,
2014-02-27 15:11:53 7067
原创 《高效学习OpenGL》 之 压缩纹理图像 glGetTexLevelParameter(),glCompressedTexImage2D()
1.在加载时压缩纹理图像在加载纹理图像时,只需把internalFormat参数设置为其中一种GL_COMPRESSED_*枚举值即可可以使用glGetTexLevelParameterfv()判断是否被压缩及压缩的格式。2.加载经过压缩的纹理图像 glCompressedTexImage2D(GLenum target, GLint level, GLint inte
2014-02-27 11:59:43 3235
原创 《高效学习OpenGL》 之 指定纹理 glTexImage2D(),gluScaleImage(), glCopyTexImage2D(),glTexSubImage2D()
定义一个二维纹理: glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, checkImageWidth, checkImageHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, checkImage); void glTexImage2D (GLenum target, GLint level, G
2014-02-27 11:28:40 12386
原创 《高效学习OpenGL》 之 纹理贴图的步骤
纹理贴图的步骤1.创建纹理对象,并为它指定一个纹理2.确定纹理如何应用到每个像素上3.启用纹理贴图功能4.绘制场景,提供纹理坐标和几何图形坐标实例:(经过纹理贴图的棋盘)#include #include #include /* Create checkerboard texture */#define checkImageWidth 64#define
2014-02-27 09:52:48 2625
原创 《高效学习OpenGL》 之 最大最小像素值 glGetMinmax(), glMinmax()
glMinmax(GLenum target, GLenum internalFormat, GLboolean sink); glMinmax(GL_MINMAX, GL_RGB, GL_FALSE); glEnable(GL_MINMAX); //计算一副图像的最小像素值和最大像素值,target参数必须为GL_MINMAX, //internalFormat参数指定了
2014-02-26 15:20:34 1810
原创 《高效学习OpenGL》 之 柱状图 glHistogram(), glGetHistogram()
glHistogram(GLenum target, GLsizei width, GLenum internalFormat, GLboolean sink); glHistogram(GL_HISTOGRAM, HISTOGRAM_SIZE, GL_RGB, GL_FALSE); //定义了应该如何存储一幅图像的柱状图数据。target必须设置为GL_HISTOGRAM或GL_PR
2014-02-26 15:03:19 2631
原创 《高效学习OpenGL》 之 卷积 glConvolutionFilter2D(), glCopyConvolutionFilter2D(),glSeparableFilter2D()
glConvolutionFilter2D(GLenum target, GLenum , GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);//定义一个二维卷积过滤器,其中target参数必须是GL_CONVOLUTION_2D。internalFormat与gglColorTabl
2014-02-26 14:36:37 2468
原创 《高效学习OpenGL》 之 颜色表 glColorTable(),glColorTableParameter(),glCopyColorTable()
1.颜色表的种类可以调用glEnable()单独启用各个颜色表2.指定颜色表 glColorTable(GLenum target, GLenum InternelFormat, GLsizei width, GLenum format, GLenum type, const GLvoid* data); //target设置为上表的三个参数时,说明此函数用于定义指定
2014-02-26 11:59:04 3061
原创 《高效学习OpenGL》 之 图像管线 glPixelStore(), glPixelTransfer(),glPixelMapf(),glPixelZoom()
本文讨论完整的图像管线,像素存储模式和像素传输操作glCopyPixels()的像素路径:glBitmap的像素路径:从纹理内存读取纹理或者把纹理写入到纹理内存时(glTexImage*()、glTexSubImage*())的像素路径:当像素数据从帧缓存区中复制到纹理内存时(glCopyTexImage*()、glCopyTexSu
2014-02-25 15:03:13 3243
原创 《高效学习OpenGL》 之 图像 glDrawPixels(), glCopyPixels(),glReadPixels()
像素数据处理流程简图 void glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); //从帧缓冲区中的一个矩形区域读取像素数据,这个矩形区域的左下角窗口坐标(x,y),他的宽度和高度分别为width,hei
2014-02-24 10:02:04 9487
原创 《高效学习OpenGL》 之 定义和使用一种完整的字体
实例#include #include #include GLubyte space[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};GLubyte letters[][13] = {{0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0x
2014-02-24 09:23:19 1648 1
原创 《高效学习OpenGL》 之 位图与字体 glRasterPos(), glWindowPos(), glBitmap()
void glRasterPos4d (GLdouble x, GLdouble y, GLdouble z = 0, GLdouble w = 1); void glRasterPos4dv (const GLdouble *v); //确定当前光栅位置,x,y,z,w指定了当前光栅位置的坐标 glWindowPos(Type x, Type y, Type z); //用
2014-02-24 09:03:45 3795 1
原创 《高效学习OpenGL》 之 执行多个显示列表 glListBase(), glCallLists()
#include #include #include #define PT 1#define STROKE 2#define END 3typedef struct charpoint { GLfloat x, y; int type;} CP;CP Adata[] = { { 0, 0, PT}, {0, 9, PT}, {1, 10, PT},
2014-02-23 11:40:14 3902 1
原创 《高效学习OpenGL》 之 管理显示列表索引 glIsList(),glDeleteLists(),glGetIntegerv()
GLboolean glIsList (GLuint list); //如果list已经用于表示显示列表,这个函数返回GL_TRUE,否则返回GL_FALSE void glDeleteLists (GLuint list, GLsizei range); //删除range个显示列表,从list指定的索引开始 glGetIntegerv(GL_MAX_LIST_NESTING
2014-02-23 11:06:52 3078
原创 《高效学习OpenGL》 之 无法再显示列表中存储的函数
1.具有返回值的函数2.用于修改客户状态的函数, glPixelStore(), glSelectBuffer()3.定义顶点数组的函数 glVertexPointer()4.所有使用了像素存储模式的函数5.依赖于客户状态的函数glFlush(), glFinish()如图:
2014-02-23 10:52:56 1184
原创 《高效学习OpenGL》 之 显示列表实例 glCallList(),glGenLists(),glNewList(),glEndList()
#include #include #include #include #define PI_ 3.14159265358979323846GLuint theTorus;/* Draw a torus */static void torus(int numc, int numt)//显示列表只能包含OpenGL函数{ int i, j, k; double s,
2014-02-23 10:17:10 10624
原创 《高效学习OpenGL》 之 多边形偏移 glPolygonOffset(),glPolygonMode()
void display (void){ GLfloat gray[] = { 0.8, 0.8, 0.8, 1.0 }; GLfloat black[] = { 0.0, 0.0, 0.0, 1.0 }; glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix (); glTr
2014-02-22 17:54:01 2963
原创 《高效学习OpenGL》 之 点参数 glPointParameter()
void glPointParameterfvEXT(GLenum pname, const TYPE* param); //设置点图元的渲染相关的值1. glPointParameterfvEXT (GL_DISTANCE_ATTENUATION_EXT, linear); //如果pname参数是GL_DISTANCE_ATTENUATION_EXT,那么param就是
2014-02-22 17:13:37 2337
原创 《高效学习OpenGL》 之 雾 glFog(), glFogCoordf()
雾是根据雾混合因子把雾颜色与源片段的颜色进行混合。雾混合因子f的计算表达式: void glFogf (GLenum pname, GLfloat param); //设置用于雾计算的参数和函数,如果pname是GL_FOG_MODE,那么param就是GL_EXP(默认)、GL_EXP或GL_LINEAR,它们分别用于选择三种不同的雾因子 //如果pname是
2014-02-21 17:28:34 3624
原创 《高效学习OpenGL》 之 抗锯齿 glHint(), glutInitDisplayMode(),glSampleCoverage()
void glHint (GLenum target, GLenum mode); //控制OpenGL的一些行为,target参数表示需要控制什么行为,其取值见表, //mode参数可以是GL_FASTEST,表示效率最高,可以是GL_NICEST表示质量最好,或者GL_DONT_CARE,表示没什么偏向1.对点和直线进行抗锯齿处理方法一: glEnabl
2014-02-21 16:50:46 3700
原创 《高效学习OpenGL》 之 混合 glBlendFunc(), glBlendFuncSeparate(),glBlendEquation(), glBlendEquationSeparate()
1.源因子和目标因子 void glBlendFunc (GLenum sfactor, GLenum dfactor); //控制被处理片段(源片段)的颜色值如何与已经存储在帧缓冲区的像素(目标像素)的颜色值进行组合 //参数sfactor表示如何计算源混合因子,dfactor表示如何计算目标混合因子 glBlendFuncSeparate(GLenum
2014-02-21 09:52:11 10829
原创 《高效学习OpenGL》 之 和光照有关的数学知识
使用光照后,顶点的颜色是按照下面的公式计算的:顶点的颜色 = 顶点处的材料发射颜色+全局环境光+经过适当衰减的来自所有光源的环境、散射和镜面光成分1.材料的发射光就是赋值给GL_EMISSION的RGB值 2.经过缩放后的全局环境光即全局环境光*材料环颜色属性ambient(bright model) *ambient(martial)3.光源的贡献=衰减因
2014-02-20 16:42:57 1381
原创 《高效学习OpenGL》 之 定义材料属性 glMaterial()
void glMaterialf (GLenum face, GLenum pname, GLfloat param); //指定光照计算的当前材料的属性,face可以是GL_FRONT,GL_BACK,GL_FRONT_AND_BACK, //pname表示设定特定的材料属性,param提供了具体的属性值1.散射和环境反射环境颜色影响物体的状整体颜色,当物体被直接照亮时,
2014-02-20 12:05:06 5571
原创 《高效学习OpenGL》 之 选择光照类型 glLightModel(), glEnable()
void glLightModelfv (GLenum pname, const GLfloat *params); //设置光照属性的模型。被设置的光照属性模型的特征是由pname指定的,param表示pname参数被设置的值1.全局环境光实例 GLfloat ambient[] = { 0.2, 0.2, 0.2, 1.0 }; glLightModelfv
2014-02-20 11:23:32 7586
原创 《高效学习OpenGL》 之 控制光源的位置和方向
1.如何使光源保持静止在使用完视图和模型变换之前设置光源的位置,init()的后面, display()之前2.独立的移动光源在模型变换之后设置光源位置#include #include static int spin = 0;void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0); glShadeMo
2014-02-19 16:40:58 4883
原创 《高效学习OpenGL》 之 创建光源 glLightfv()
1.创建光源void glLightfv (GLenum light, GLenum pname, const GLfloat *params); //创建指定的光源,light可以是GL_LIGHT0、GL_LIGHT1,pname定义的是光源的属性,它指定了一个命名参数。params表示表示pname属性将要被设置的值pname和params的值实例 GLfloat li
2014-02-19 15:39:53 17859 1
原创 《高效学习OpenGL》 之 隐藏表面消除
隐藏表面消除就是消除实心物体被其他物体所遮挡的部分。深度缓冲区的原理就是把一个距离观察平面(通常是近侧裁剪平面)的深度值与窗口中的每个像素相关联,一开始,使用glClear()函数(以GL_DEPTH_BUFFER_BIT)把所有像素的深度值设置为最大可能距离(通常是远侧裁剪平面),然后以任意顺序绘制场景中的物体为了能够实现隐藏表面消除,调用如下代码 glE
2014-02-19 11:11:04 2337
原创 《高效学习OpenGL》 之 指定颜色和着色模型 glClampColor(),glIndexf(),glClearIndex(),glShadeModel()
1.在RGBA模式下指定颜色 glColor3f (1.0, 0.0, 0.0); //设置绘图颜色颜色截取 void glClampColor(GLenum target, GLenum clamp); //指定主颜色值和辅助颜色值是否截取2.在颜色索引模式下指定颜色 glIndexf(GLfloat c); //把当前颜色索引设置为c g
2014-02-19 10:27:55 2566
原创 《高效学习OpenGL》 之 逆变换和模拟变换 gluUnProject(),gluProject()
int gluUnProject ( GLdouble winx, GLdouble winy, GLdouble winz, const GLdouble modelMatrix[16], const GLdouble projMatrix[16], const GLint viewport[4]
2014-02-19 10:06:26 3666
转载 对于"第一次创业者"应该给什么样的建议
转置:http://blog.csdn.net/shenyisyn/article/details/19196667其实我创业也不是很成功(目前属于第二次)。目前为止,基本保证家里足够温饱和足够温馨,偶尔奢侈,但是我坚持走技术路线,不做土豪(因为做不了)。 我创业的口号是:成全别人,累死自己!! 有人问,创业混的还可以的标准什么?我总结如下: 1、超
2014-02-19 09:06:58 1182
原创 《高效学习OpenGL》 之 创建机器人手臂源码讲解
#include #include static int shoulder = 0, elbow = 0;void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_FLAT);}void display(void){ glClear (GL_COLOR_BUFFER_BIT);
2014-02-18 21:28:05 2551
原创 《高效学习OpenGL》之 创建太阳系模型
void display(void){ glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); glPushMatrix(); glutWireSphere(1.0, 20, 16); /* draw sun */ glRotatef ((GLfloat) year, 0.0, 1.0, 0.0);/
2014-02-18 20:52:01 2312
原创 《高效学习OpenGL》之 其他裁剪平面 glClipPlane()
void glClipPlane (GLenum plane, const GLdouble *equation); //定义一个裁剪平面,equation参数指向平面方程Ax+By+Cz+D=0的4个系数,所有不是位于这个半空间的点都将被删除掉, //plane参数是GL_CLIP_PLANEi,其中i是一个整数,表示需要定义那个有效裁剪截面,i的值位于0和5之间实例vo
2014-02-18 20:06:47 4571
原创 《高效学习OpenGL》之 操作矩阵堆栈 glPushMatrix(),glPopMatrix()
glPushMatrix(); //把当前堆栈中的所有矩阵都下压一级。当前矩阵堆栈是由glMatrixMode()指定的。glPopMatrix(); //把堆栈顶部的那个矩阵弹出堆栈,销毁被弹出的矩阵内容
2014-02-18 19:42:58 1888
All in One SEO Pack Pro多合一SEO工具-wordpress插件下载
2024-03-01
利用cloudreve+onedrive搭建个人网盘实现存储自由 (Qztw2NOMkYc)
2023-12-04
python对服务器vps进行批量操作管理 支持一键查看所有VPS资源占用、一键所有VPS安装docker、一键VPS更新操作系
2023-11-14
独角数卡源码发卡网站源码以及搭建视频教程
2023-08-05
使用Python创建快速创建剪映草稿轨道,自动生成视频
2023-07-31
ChatGPT进阶 基于目录下文档-批量化生成文章
2023-04-29
背景音乐素材所有合集 爱情之歌+感人之声+恢弘之章+静谧之曲+久仰之乐+童年记忆+优美之音+自然之韵
2023-04-27
python建立图片索引数据库,根据一段文字,找到存放在电脑上最匹配的图片
2023-03-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人