`
tiankefeng0520
  • 浏览: 146838 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论
文章列表
OpenGL除了颜色缓冲区、深度缓冲区、模板缓冲区之外,还有累积缓冲区。累积缓冲区允许你把渲染到颜色缓冲区的值,拷贝到累积缓冲区。在多次拷贝操作到累积缓冲区时,可以用不同方式的把颜色缓冲区内容和当前累积缓冲 ...
深度缓冲区进行三维混合多边形的绘图顺序极大地影响了最终的混合效果。为了应对不同深度的图形显示我们要开启深度缓冲区glEnable(GL_DEPTH_TEST);对已开启深度缓冲区的图形来说,如果一个不透明的物理如果举例观察点较近,那么它所遮挡的部分就不会进行绘制对于存在透明度的图形来说要复杂一些,如果一个透明的物体靠近距离观察点较近。那么它所遮挡的部分也是需要绘制的对于透明的图形绘制需要设置深度缓冲区的可读性glDepthMask(GL_TRUE|GL_FALSE)GL_TRUE:代表深度缓冲区为可读写GL_FALSE:代表深度缓冲区为只读对于透明的3D图形绘制需要设置深度缓冲区步骤为:1. ...
帧缓冲区有许多缓冲区构成,这些缓冲区大致分为:颜色缓冲区:用于绘图的缓冲区,它包含了颜色索引或者RGBA颜色数据。深度缓冲区:存储每个像素的深度值,当启动深度测试时,片段像素深度值和深度缓冲区深度值进行比 ...
(本节对应分析NEHE教程第20课)   有时我们希望上层的图片的某些区域能投出下层的某些区域。当然我们可以通过关 键色进行处理,但是蒙版技术一样可以达到这样的效果,通过以下图片达到蒙版的效果   本节包含2个技术 ...
混合步骤:1.设置混合模式2.启用混合 glColor4f(1.0f,1.0f,1.0f,0.5f);   // 全亮度, 50% Alpha 混合glBlendFunc(GL_SRC_ALPHA,GL_ONE);  // 基于源象素alpha通道值的半透明混合函数glEnable(GL_BLEND);  // 打开混合                        OpenGL 会把源颜色和目标颜色各自取出(源颜色认为是片段。目标演示是帧缓冲区内容),并乘以一个系数(源颜色乘以的系数称为“源因子”,目标颜色乘以的系数称为“目标因子”),然后相加,这样就得到了新的颜色。(也可以不是 ...
雾效果是就是是远处看的模糊,一种类似于大气效果。雾是在执行了矩阵变换,光照,纹理后才会应用,因此雾效果对上述内容都会产生印象。在大型项目中雾气可以提高性能,因为他可以选择不绘画因为雾气影响而看不见的物体 雾的效果做法:1.设置雾气的模式 glFogi(GL_FOG_MODE, fogMode[fogfilter])2.设置雾的颜色 glFogfv(GL_FOG_COLOR, fogColor);3.设置雾的密度 glFogf(GL_FOG_DENSITY, 0.35f);  4.设置系统如何计算雾气 glHint(GL_FOG_HINT, GL_DONT_CARE);5.雾气的开始位置 g ...
内存对齐:字长32位的计算机上,如果数据在内存中按照32位的边界对齐(地址为4字节的倍数),那么硬件提取数据的速度就会快得多,类似的在64位计算机上,如数据地址按照8字节对齐,他对数据存取效率会非常高举例:图像每行按照4字节方式进行存储,如果图像宽度是5个像素。RGB各占一个字节,那么每行=5*3=15个字节,按照4字节方式存储每行会浪费一个自己的存储空间 如果每行按照1字节方式存储,每一行的数据都是从下一个可用的字节开始存储,这样虽然不会浪费内存空间,但是性能不能4字节的好,同理2字节方式数据的起始地址是2的倍数   举例2:如果每个像素保存1位数据,行长度是75,如果对齐值是4,那 ...
除了几何图形的渲染,还有两种重要的类型的数据渲染位图:由0和1组成的矩形数组(采用黑白,0为黑1,为白)图像数据:每个像素包含好几段数据(RGBA)   当前光栅位置当前光栅位置就是开始绘制下一副位图或图像的屏幕位置,光栅坐标需要经过模型投影矩阵变换glRasterPos{234}{sifd} (TYPE x, TYPE y,TYPE z,TYPE w); 当前窗口位置glWindowPos{23}{sifd} (TYPE x, TYPE y,TYPE z);设置当前窗口位置,不需要经过模型投影矩阵变换 glOrtho (-20, 80, 0, h, -1.0, 1.0);左图1:光 ...
在进行纹理贴图是,一次是把一副图像应用在个一个多边形上,多重纹理允许应用几个纹理,在纹理操作管线上把它们逐个应用到同一个多边形上使用glGetIntegerv(GL_MAX_TEXTURE_UNITS)查询当前OPENGL最多支持纹理数量   多重纹理的步骤 1.建立纹理单元纹理图像glTexImage2D 纹理过滤 glTexParameteri(…, GL_TEXTURE_MAG_FILTER, …); 纹理环境应用glTexParameteri(…, GL_TEXTURE_WRAP_S, …); 纹理坐标自动生成(一般不需要) 顶点数组指定(如果需要的话) 每 ...
可以让OpenGL自动生成纹理坐标,而不是使用glTexCoord*()函数显示地分配纹理坐标void glTexGeni (GLenum coord, GLenum pname, GLint param);     coord pname param {GL_S,GL_T}或{GL_R,GL_Q} GL_TEXTURE_GEN_MODE GL_OBJECT_LINEAR GL_EYE_LINEAR GL_SPHERE_MAP GL_NORMAL_MAP
在纹理贴图场景时,必须为每个顶点提供物体坐标和顶点坐标,经过变换之后,物体坐标决定了应该在屏幕上的那个地点渲染每个特定的顶点,纹理坐标决定了纹理图像中的那个纹理单元将分配给这个顶点void glTexCoord{1,2,3,4}{sifd} (Type coords);   纹理的放大与缩小 1.原始大小  glTexCoord2f(0.0f, 0.0f); glVertex2f(-1.0f, -1.0f);  glTexCoord2f(1.0f, 0.0f); glVertex2f( 1.0f, -1.0f);  glTexCoord2f(1.0f, 1.0f); glVertex2 ...
通过纹理函数(glTexEnv*())可以把纹理图像的颜色与物体表面的原先的颜色进行混合 当我们指定纹理数据时,其第三个参数internalformat可以简化为6种格式   基本内部格式 所提取的源颜色(R,G,B,A) GL_ALPHA (0,0,0,A) GL_LUMINANCE (L,L,L,1) GL_LUMINANCE_ALPHA (L,L,L,A)
当物体放大缩小时导致投影在上面的纹理也随着变化,OpenGL为了 优化其细节使其效果更好,因此可以采用纹理过滤glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); GL_TEXTURE_MAG_FILTER GL_NEAREST或GL_LINEAR GL_TEXTURE_MIN_FILTER GL_NEAREST 速度快,效果差 GL_LINEAR  计算量大。效果好 GL_NEAREST_MIPMAP_NEAREST 速度快,效果差 GL_LINEAR_MIPMAP_NEAREST GL_N ...
在动态场景中,当一个纹理对象迅速地远离观察点时,纹理图像必须随着背投影的图像一起缩小,为了实现这个效果,OPENGL必须对纹理图像进行过渡,适当地对它进行缩小,使他不会产生令人不舒服的视觉感受。OpenGL mipmap 预先设置好不同分辨率的纹理图像,根据被贴图的物体的大小确定采用哪种分辨率的纹理图像,达到平滑过渡的效果   使用mipmap必须提供全系列的大小为2的整数次方的纹理图像,其范围从最大值直到1*1,例如最大值为64*16的纹理单元还必须提供32*8,16*4,8*2,4*1,2*1,1*1的纹理单元。他们的分辨率为,0,1,2,3,4,5,6另外使用mipmap还需要选择 ...
纹理贴图的步骤1.创建纹理对象,并为它指定一个纹理,纹理包含1维,2维,3维。描述纹理的数据由1~4个元素组成,用于表示RGBA四元组。调整常量或者深度成分glGenTextures(1, &texture[0]);glBindTexture(GL_TEXTURE_2D, texture[0]);2.确定纹理如何应用到每个像素上glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);3.启用纹理贴图功能GL_TEXTURE_1D,GL_TEXTURE_2D,GL_TEXTURE_3D,GL_TEXTURE_CUBE_MA ...
Global site tag (gtag.js) - Google Analytics