I am using a single VBO to store vertices in the follow format:
v1X, v1Y, v1Z, v1R, v1G, v1B, v2A, v2X, ...
Vertex positioning is fine, shapes show up where expected, however instead of using the colour provided, all shapes show up red.
The code given below simply draws two triangles to form one square ground shape.
Buffer data preparation method
public void prepare(float[] data) {
glBindBuffer(GL_ARRAY_BUFFER, vboID);
FloatBuffer dataBuffer = RenderUtils.fArrayToBuffer(data);
if(dataLength != data.length) {
glBufferData(GL_ARRAY_BUFFER, dataBuffer, GL_STATIC_DRAW);
dataLength = data.length;
} else {
glBufferSubData(GL_ARRAY_BUFFER, 0, dataBuffer);
}
glVertexAttribPointer(0, 3, GL_FLOAT, false, 7*4, 0);
glVertexAttribPointer(3, 4, GL_FLOAT, false, 7*4, 3*4);
}
Render code
floorObj.prepare(new float[]{
-5, 0, -5, 1, 0, 0, 1,
5, 0, -5, 0, 1, 0, 1,
-5, 0, 5, 0, 0, 1, 1,
5, 0, -5, 1, 0, 0, 1,
5, 0, 5, 0, 1, 0, 1,
-5, 0, 5, 0, 0, 1, 1,
});
glDrawArrays(GL_TRIANGLES, 0, 6);
Vertex shader
#version 330 core
in vec3 position;
in vec4 i_color;
out vec4 color;
uniform mat4 transform;
void main(){
gl_Position = transform * vec4(position, 1);
color = i_color;
}
Fragment shader
#version 330 core
in vec4 color;
out vec4 f_color;
void main(){
f_color = color;
}
As previously stated, vertex positions work fine, however colour does not. Just ask if any other code would be useful to determine the problem.
Thanks, - Jasper
layout(location = 0) in vec3 posición;
andlayout(location = 3) in vec4 i_color;
might help. $\endgroup$