Opengl es 顶点着色器中的属性参数
我正在用pvrsdk在Ubuntu10.10中开发OpenGLES2.0。 在我的代码中,我使用三角形的顶点进行渲染,但我必须在顶点着色器中使用属性参数。它是如何变化的 我在示例中看到他们正在使用myVertex。这是什么意思 像这样:Opengl es 顶点着色器中的属性参数,opengl-es,glsl,opengl-es-2.0,Opengl Es,Glsl,Opengl Es 2.0,我正在用pvrsdk在Ubuntu10.10中开发OpenGLES2.0。 在我的代码中,我使用三角形的顶点进行渲染,但我必须在顶点着色器中使用属性参数。它是如何变化的 我在示例中看到他们正在使用myVertex。这是什么意思 像这样: const char* pszVertShader = "\ attribute highp vec4 myVertex;\ uniform mediump mat4 projmatrix;\ invariant gl_Pos
const char* pszVertShader = "\
attribute highp vec4 myVertex;\
uniform mediump mat4 projmatrix;\
invariant gl_Position;\
void main(void)\
{\
gl_Position = projmatrix * myVertex;\
}";
===============================render======================
glBindAttribLocation(uiProgramObject, VERTEX_ARRAY, "myVertex");
所以我只想知道我从文本文件中获取顶点,它会影响myVertex属性吗
如果您需要其他信息,我可以提供给您,并且我已经在前面的问题中发布了我的全部代码OpenGL 3/OpenGL ES 2放弃了预定义顶点属性“位置”、“法线”、“texcoord”的概念,这些属性通过glVertexPointer、glNormalPointer、glTexCoordPointer等提供 相反,在着色器中,在属性标识符中引入自定义
变量。这些标识符由所谓的属性位置(数字索引)引用glBindAttribLocation
允许将属性标识符分配到特定位置。在上述代码片段的情况下,似乎存在一个全局常量VERTEX_ARRAY
——由程序代码(!)引入,即不是由OpenGL或类似的东西预定义的——它普遍用于着色器中的myVertex
variang/In属性
因此,特定的顶点属性可以通过一个公共标记vertex\u数组
以类似以下语句的方式提供数据:
glVertexAttribPointer(VERTEX_ARRAY, 3, GL_FLOAT, false, 0, isVBO ? (char*)vertex.offset : (char*)vertex.data + vertex.offset);
当然,glvertexattributepointer调用的确切语义取决于执行这些调用的特定程序
除了(全局)常量顶点数组
之外,还可以使用变量shader.attrib.VERTEX
,使用
shader.attrib.vertex = glGetAttribLocation(shader.program_object, "myVertex");
并在调用glVertexAttribute指针时使用该变量
glVertexAttribPointer(shader.attrib.vertex, …)
我的全部代码都在链接中,您可以看到:它指定要绑定的通用顶点属性的索引。它的索引。