我正在尝试绘制渐变,但首先我只想让glcolorpointer工作。如果我使用glColor4f(...)它会正确地绘制颜色,但glcolorpointer只是绘制黑色。请帮忙
gl11.glPushMatrix();
//gl11.glColor4f(RGBBorder[0], RGBBorder[1], RGBBorder[2], alpha);
gl11.glBindBuffer(GL11.GL_ARRAY_BUFFER, vertexPointerCube);
gl11.glBindBuffer(GL11.GL_ELEMENT_ARRAY_BUFFER, indexPointerCube);
gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
float colors[] = {.7f,.7f,.7f,.5f};
ByteBuffer vbb = ByteBuffer.allocateDirect(colors.length * 4);
vbb.order(ByteOrder.nativeOrder());
FloatBuffer buff = vbb.asFloatBuffer();
buff.put(colors);
buff.position(0);
gl.glColorPointer(4, GL10.GL_FLOAT, 0, buff);
gl11.glVertexPointer(3, GL10.GL_FLOAT, 0, 0);
gl11.glDrawElements(GL11.GL_TRIANGLES, indicesCube, GL11.GL_UNSIGNED_SHORT, 0);
gl.glDisableClientState(GL10.GL_COLOR_ARRAY);
gl11.glPopMatrix();
答案 0 :(得分:5)
我认为问题在于您只为一个顶点添加颜色,并使buff
太小而无法处理您拥有的所有顶点。使用你应该拥有的颜色缓冲区,在这种情况下,每个顶点有4个浮点数,乘以8(假设它是你正在绘制的一个立方体)。它应该与引入顶点坐标非常相似,即使我从未玩过GL11.glBindBuffer
。这次有差异,它是你为每个顶点指定的颜色值。
This tutorial非常好读,如果你还没有这样做的话。