glBuffers & glVertexPtrs
摘要:【glBuffers & glVertexPtrs】1、glBuffers使得数据可以存储在显示存中。 GLuint VBO; glGenBuffers(1, &VBO); glBindBuffer(GL_ARRAY_BUFFER, VBO); glBufferData(GL_ARRAY_B...
阅读全文
字符图元 & 显示列表
摘要:【字符图元】1、typeface(字样),即设计风格,如Courier等。2、font(字体),如10磅Courier斜体。3、monspace即为等宽字体,proportional为非等宽字体。4、字体有2种存储格式:位图字体(bitmap font),也要光栅字体(raster font);轮...
阅读全文
OpenGL位图函数
摘要:【OpenGL位图函数】1、OpenGL中glBitmap用于绘制一个二值阵列。 When drawn, the bitmap is positioned relative to the current raster position, and framebuffer pixels corre...
阅读全文
GL_LINES & GL_LINE_STRIP & GL_LINE_LOOP
摘要:【GL_LINES】 独立的线段,下式中,p2与p3间没有连线。 【GL_LINE_STRIP】 连续的线段,下式中, p2与p3会连成线段。 【GL_LINE_LOOP】 参考:《计算机图形学》3.4 OpenGL画线函数。
阅读全文
Uniform & Attribute & Varying
摘要:【Uniform & Attribute & Varying】 顶点着色器的输入变量用关键字“attribute”来限定。 片段着色器的输入变量(它和顶点着色器的输出变量相对应)用关键字"varying"来限定。 uniform指定这个值从应用程序传递给着色器,并在一个特定的图元中保持为常量值...
阅读全文
glTexGen
摘要:【glTexGen】 Rather than having to explicitly provide a texture coordinate for each vertex, we can use texture coordinate generation (texgen) functions...
阅读全文
多重纹理(纹理单元)
摘要:【多重纹理(纹理单元)】 glActiveTextureARB理解为选择(Select)某纹理单元(Texture Unit),选择一个纹理单元表示后续的glEnable(GL_TEXTURE_2D)、glBindTexture(GL_TEXTURE_2D, texture);作用于此所选的纹理单...
阅读全文
Texture Filter
摘要:【Texture Filter】 我们的纹理是要贴到三维图形表面的,而三维图形上的pixel中心和纹理上的texel中心并不一至(pixel不一定对应texture上的采样中心texel),大小也不一定一至。当纹理大于三维图形表面时,导至一个像素被映射到许多纹理像素上;当维理小于三维图形表面时,许...
阅读全文
OpenGL顶点缓冲区对象
摘要:【OpenGL顶点缓冲区对象】 显示列表可以快速简单地优化立即模式(glBegin/glEnd)的代码。在最坏的情况下,显示列表的命令被预编译存到命令缓冲区中,然后发送给图形硬件。在最好的情况下,是编译后放在图形硬件中以减少传输的带宽。显示列表的优化根据实现的不同而有所不同,而且显示列表一旦被创建...
阅读全文
OpenGL顶点数组
摘要:【OpenGL顶点数组】 在OpenGL中,所有的几何图元都是由顶点定义的,而每个顶点又有很多属性,如:坐标,颜色,法向量等。如果对每个顶点逐个的调用函数来描述,那么,开销是非常大的。而且不方便对复杂几何体顶点的管理。这里采用了顶点数组的方法,不但便于数据的管理,而且大大减少了函数的调用。使用顶点...
阅读全文
GLSL Notes
摘要:【GLSL Notes】API of shader: glCreateShader(), glShaderSource(), glCompileShader(), glGetShadrInfoLog(), glCreateProgram()API of porgram: glCreateProgram(), glAttachShader(), glDetashShader(), glLinkProgarm(), glGetProgarmInfoLog(), glUseProgram()Resource Release: glDeleteShader(), glDeleteProgram(...
阅读全文
OpenGL复习要点II
摘要:【OpenGL复习要点II】 1、视图变换必须出现在模型变换之前。 2、glMatrixMode()参数有三个,GL_MODELVIEW,GL_PROJECTION,GL_TEXTURE。 3、变换顺序非常重要,代码中后出现的矩阵最先被应用于顶点。 4、投影变幻是在ModelView变幻后再乘一个投影矩阵。 5、glViewPort()指定生成的图像在窗口中的空间,通过指定左下角x,y和width、height来指向。 6、双缓冲并不是加快了渲染,而是把未完成的render放置在了离线环境。 7、glShadeMode为GL_SMOOTH时,图元颜色是顶点色的平滑过度,GL_FLAT时,为任何
阅读全文
OpenGL复习要点
摘要:【OpenGL要点复习】 1、和像素有关的信息(例如像素的颜色)组织成位平面 (bitplane)的形式,位平面又可以组织成帧缓冲区(framebuffer)的形式。位平面是一块内存区域,保存了屏幕上每个像素的1个位的信息。 2、glClearColor()函数确定了窗口将清除成什么颜色,而glCl...
阅读全文
OpenGL之法线为什么是ModelView的Invert&Transpose
摘要:【法线为什么是ModelView的Invert&Transpose】 参考:http://blog.sina.com.cn/s/blog_4a657c5a010148gr.html 该博主说写得很明白,在模型视图变换时,顶点乘模型视图变换矩阵M,而顶点对应的顶点法线向量(或其他的法线向量)则要乘模型视图矩阵的逆转置矩阵(M-1)t。 开发的时候,可以参考GLKit提供的矩阵运算函数,非常的方便。
阅读全文
iOS GLES Minute
摘要:1、系统要提供 A、rendering contexts (渲染环境) B、system framebuffers(系统帧缓冲区)2、iOS does not provide system framebuffers. Instead, iOS extends the framebuffer object provided by OpenGL ES to allow framebuffers that share data with Core Animation. iOS没有提供system framebuffer,代替的是,iOS扩展了framebuffer,使得framebuffer...
阅读全文
OpenGL SL 优化要点
摘要:1. 延迟vector计算。例:不好的用法。 优化后的用法。2. 去冗余计算, vector整体计算。例:良好的用法。3. 避免分支。(避免if语句) 分支语句性能排序: a) 最佳:编译期确定的常量 b) 可接受:uniform变量 c) 可能很差:在shader内计算的变量解决方案:将各个分支作为单独的shader。(会增加一点工作量及复杂度)实践参考:在性能和工量入复杂度之间作一个权衡。因受寄存器限制,SL的编译代码越短,效率越高。另外,因为是海量计算,所以细徽的优化会带来革命性的性能改善。
阅读全文
OpenGL渲染管线
摘要:1、Vertex Shader 1)顶点依次通过模型视图矩阵(ModelView)处理,生成变幻后的顶点。 2)TexGen。 3)Vertext Light Calculation。2、第一次剔除 Culling --> Rasterization --> Stencil Test -->...
阅读全文