Opengl es 顶点着色器中的属性参数

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

我正在用pvrsdk在Ubuntu10.10中开发OpenGLES2.0。 在我的代码中,我使用三角形的顶点进行渲染,但我必须在顶点着色器中使用属性参数。它是如何变化的

我在示例中看到他们正在使用myVertex。这是什么意思

像这样:

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, …)

我的全部代码都在链接中,您可以看到:它指定要绑定的通用顶点属性的索引。它的索引。