GLES & Shader Language 易错集锦
摘要:1. vertex shader 和 fragment shader 通过varying变量传递数据, 如下代码在编译fragment shader时候会提示编译错误vertex shaderFragment shader varying vec4 v_color; ...
阅读全文
posted @
2014-08-19 00:31
人间奇迹
阅读(987)
推荐(0) 编辑
OpenGL ES Processing Pipeline
摘要:很多文档包括红宝书中对OpenGL ES 中pipeline 的介绍都采用如下的流程来描述,其描述了vertex shader 和 fragment shapder在整个流水线中的的位置,但是对操作细节很有描述。经过阅读相关的文档和所有opengl essl等相关资料,发现图2能够将各种细节更精细的呈现在图中,并细化到了代码层图 2
阅读全文
posted @
2013-05-18 22:41
人间奇迹
阅读(391)
推荐(0) 编辑
Vertex Texture Fetch(VTF) && Fragment Texture Fetch ( FTF )
摘要:在vertex shader里也可以检索纹理。我本来觉得这没什么好奇怪的,因为我一直也觉得这很当然可以啊~当初橙书(OpenGL Shading Language Edtion2)也说过texture2D这类函数不是fragment shader专用的,倒还有texture2DLod这种在vertex shader里专用的(后面一句是马后炮~),只是我不知道怎么用,在哪里用,以及更重要的:为什么要用。为什么要在vertex shader里检索纹理。都知道,纹理里的一般是一幅图像,无论是外部导入的还是通过FBO等手段渲染到的。既然如此,有意义的当然是图像里的每一个像素啦,通过纹理坐标检索纹理中的
阅读全文
posted @
2013-05-18 21:14
人间奇迹
阅读(1401)
推荐(0) 编辑
FBO
摘要:上面这幅图显示了帧缓冲区对象与纹理对象、渲染缓冲区对象的关系。 多个纹理对象或多个渲染缓冲区对象,可通过连接点(attachment points)连接到帧缓冲区对象上, FBO有多个颜色关联:(GL_COLOR_ATTACHMENT0_EXT,..., GL_COLOR_ATTACHMENTn_EXT), 一个深度关联(GL_DEPTH_ATTACHMENT_EXT) 一个模板关联 (GL_STENCIL_ATTACHMENT_EXT) 颜色关联的数目最少有一个,最大数目是与实体的显卡相关的,可以GL_MAX_COLOR_ATTACHMENTS_EX...
阅读全文
posted @
2013-05-17 01:53
人间奇迹
阅读(785)
推荐(0) 编辑
索引顶点的VBO与多重纹理下的VBO
摘要:1. 索引顶点的VBO 在VA(顶点数组)下,索引数据被放入一个名为索引数组的“容器”里,在绘制的时候跟其他顶点属性一样,要先用glEnableClientState (GL_INDEX_ARRAY),再用glIndexPointer指定该容器…… 这一切在VBO中都是不需要的。因为它与glDrawElements函数必定一起出现,所以VBO通过同一标志位GL_ELEMENT_ARRAY_BUFFER把它们的关系“确定”下来。只需要创建一个储存索引数据索引的VBO,渲染时绑定,调用glDrawElements时,第二参数是索引数据的大小,足矣。//初始化部分glGenBuffers(1,&am
阅读全文
posted @
2013-05-16 18:04
人间奇迹
阅读(688)
推荐(0) 编辑
openGL ES 常用接口剖析
摘要:void glDrawArrays(GLenum mode, GLint first, GLsizei count); 在OpenGL中图形都是通过分解成三角形的方式进行绘制。绘制图形通过GL10类中的glDrawArrays方法实现, 参数1:mode 有三种取值 1. GL_TRIANGLES:每三个顶之间绘制三角形,之间不连接 2. GL_TRIANGLE_FAN:以V0V1V2,V0V2V3,V0V3V4,……的形式绘制三角形 3. GL_TRIANGLE_STRIP:顺序在每三个顶点之间均绘制三角形。这个方法可以保证从相同的方向上所有三角形均被绘制。 以V0V1V2,V1...
阅读全文
posted @
2013-05-16 16:35
人间奇迹
阅读(4270)
推荐(3) 编辑
VAO与VBO
摘要:如果你也逐渐步进GL3.0开始的新标准,你大概会留意到传统的绘图方式(glVertex)已经要被废掉了,不仅如此,以最高绘制速度为标记的显示列表方式也已经被印上deprecated了,这样,在以前的文章([学一学,VBO] )中的讨论,在新标准的面前都显得没什么必要了。我想说的是,OpenGL对GPU的入口“顶点传送”——或者说,绘制方式,尽量不要再选择传统方式(glVertex)或显示列表(glCallList)甚至VA(vertex array)了。哪怕你是用的一个compatable的GL-context,哪怕顶点数据部分持续变化或者恒定不变,也得注意要尽量尽量使用VBO来组织你的数..
阅读全文
posted @
2013-05-16 13:05
人间奇迹
阅读(850)
推荐(0) 编辑
OpenGL Vertex Buffer Objects(VBOs) 之 一
摘要:VBO,全称Vertex Buffer Object,与FBO,PBO并称,但它实际上老不少。就某种意义来说,它就是VA(Vertex Array)的升级版。1. "客户端状态" 和 "服务端状态" 从VBO的作用说起吧。VBO出现的背景是人们发现VA还有不让人满足的地方。一般,在OpenGL里,提高顶点绘制速度的手法,一是把常规的glBegin() - glEnd()类代码段放入一个显示列表中(通常在初始化阶段完成),然后每遍渲染都调用这个显示列表;二是使用顶点数组,把顶点以及顶点属性数据作为数组,渲染的时候直接用一个或几个函数调动这些数组里的数据进行
阅读全文
posted @
2013-05-15 23:08
人间奇迹
阅读(1457)
推荐(0) 编辑
OpenGL/GLSL Client + Shaderprogram 数据传递
摘要:一 、shader 程式的装载 shader程序的装载包括如下步骤:创建Shader对象(glCreateShader——成功时返回非0的无符号Handle值,指向Shader对象);把shader代码传入shader对象(glShaderSource——注意此函数的参数,字符流地址参量是GLchar*,不支持宽字符。shader代码可以用文本文件保存,可以在程序中用字符串保存,但最终还是必须在程序中以字符串的形式传入Shader对象中,执行后可删除内存上保存的shader代码字符串副本);编译Shader对象——正如我们编译任何代码一样(glCompileShader——应该以GL_COM.
阅读全文
posted @
2013-05-15 20:51
人间奇迹
阅读(1135)
推荐(0) 编辑