Opengl es 我可以用着色器语言将vec2数组绑定到vec4变量吗?

Opengl es 我可以用着色器语言将vec2数组绑定到vec4变量吗?,opengl-es,shader,Opengl Es,Shader,我可以用着色器语言将vec2数组绑定到vec4变量吗 例如,在代码blow中,变量“position”是一个vec4类型,我试图将变量“squareVertices”绑定到它,但是squareVertices是一个vec2类型的数组,只有(x,y)个坐标,可能是默认的(x,y,z,w)=(x,y,0,1) 我的顶点着色器和属性绑定代码: attribute vec4 position; attribute vec2 textureCoordinate; varying vec2 coordina

我可以用着色器语言将vec2数组绑定到vec4变量吗

例如,在代码blow中,变量“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,
};

是的,这是合法的。而且,z和w的默认值分别为0和1,这是正确的。OpenGL ES 2.0规范的第2.7节介绍了这一点。

是的,这是合法的。而且,z和w的默认值分别为0和1,这是正确的。这在OpenGL ES 2.0规范的第2.7节中有介绍。

六年后,这正好解决了我的疑问:OpenGL ES 2 for Android的第一个示例:快速入门指南如何只能有
x
y
坐标,而在顶点着色器中
A_位置
是一个vec4。在新的代码和工程中测试它。。。一个OpenGL的谜团少了一点,谢谢。六年后,这正好解决了我的疑问:OpenGL ES 2 for Android的第一个示例:快速入门指南怎么可能只有
x
y
坐标,而在顶点着色器中
A_位置
是一个vec4。在新的代码和工程中测试它。。。少了一个OpenGL谜题,谢谢。