不要为每个顶点重复相同的颜色数据,如何将颜色应用于每个顶点?我将顶点位置和纹理坐标都存储在一个缓冲区中,因为它们是可变的,但我希望颜色保持相同。
以下是我定义一个顶点的方式:
vertexData[++vOffset] = position.x;
vertexData[++vOffset] = position.y;
vertexData[++vOffset] = position.z;
vertexData[++vOffset] = texture.x;
vertexData[++vOffset] = texture.y;
vertexData[++vOffset] = r;
vertexData[++vOffset] = g;
vertexData[++vOffset] = b;
vertexData[++vOffset] = a;
我试图将RGBA存储在一个浮点缓冲区中,并像以下方式应用它:
vertexBuffer.position(0);
GLES20.glEnableVertexAttribArray(GLShader.mPositionHandle);
GLES20.glVertexAttribPointer(GLShader.mPositionHandle, 3, GLES20.GL_FLOAT, false, 36, vertexBuffer);
vertexBuffer.position(3);
GLES20.glEnableVertexAttribArray(GLShader.mTexCoordLoc);
GLES20.glVertexAttribPointer(GLShader.mTexCoordLoc, 2, GLES20.GL_FLOAT, false, 36, vertexBuffer);
colorBuffer.position(0);
GLES20.glEnableVertexAttribArray(GLShader.mColorHandle);
GLES20.glVertexAttribPointer(GLShader.mColorHandle, 4, GLES20.GL_FLOAT, false, 0, colorBuffer);
此外,我该如何设置着色器,以便如果没有颜色输入,则默认为(1,1,1,1)?