【发布时间】:2013-03-08 01:22:31
【问题描述】:
我可以将 vec2 数组绑定到着色器语言中的 vec4 变量吗?
例如,在代码中,变量“position”是一个vec4类型,我尝试将变量“squareVertices”绑定到它,但是squareVertices是一个vec2类型的数组,只有(x,y)坐标,也许默认 (x,y,z,w) = (x,y,0,1)?
我的顶点着色器和属性绑定代码:
attribute vec4 position;
attribute vec2 textureCoordinate;
varying vec2 coordinate;
void main()
{
gl_Position = position;
coordinate = textureCoordinate;
}
glBindAttribLocation(gProgram, ATTRIB_VERTEX, "position");
glBindAttribLocation(gProgram, ATTRIB_TEXTURE, "textureCoordinate");
// bind attribute values
glVertexAttribPointer(ATTRIB_VERTEX, 2, GL_FLOAT, 0, 0, squareVertices);
glEnableVertexAttribArray(ATTRIB_VERTEX);
glVertexAttribPointer(ATTRIB_TEXTURE, 2, GL_FLOAT, 0, 0, coordVertices);
glEnableVertexAttribArray(ATTRIB_TEXTURE);
// squareVertices definition
static const GLfloat squareVertices[] = {
-1.0f, -1.0f,
0.0f, -1.0f,
-1.0f, 0.0f,
0.0f, 0.0f,
};
【问题讨论】: