Вместо того, чтобы повторять одни и те же данные цвета снова и снова для каждой вершины, как применить цвет к каждой вершине? Я сохраняю координаты вершин и координаты текстуры в одном буфере, поскольку они меняются, но я хочу, чтобы цвета были одинаковыми.
Вот как я определяю одну вершину:Управление цветовыми данными в OpenGL ES 2.0
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)?