gpt4 book ai didi

android - OpenGL (ES) Android -- 为什么这个 glcolorpointer 只显示黑色?

转载 作者:搜寻专家 更新时间:2023-11-01 07:39:30 26 4
gpt4 key购买 nike

我正在尝试绘制渐变,但首先我只想让 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();

最佳答案

我认为问题是您只为一个顶点添加颜色,而 buff 太小而无法处理您拥有的所有顶点。使用颜色缓冲区你应该有,在这种情况下,每个顶点 4 个 float ,乘以 8(假设它是你正在绘制的立方体)。它应该与引入顶点坐标非常相似,即使我从未使用过 GL11.glBindBuffer。这次有所不同,它是您为每个顶点分配的颜色值。

This tutorial如果您还没有读过,这本书非常好。

关于android - OpenGL (ES) Android -- 为什么这个 glcolorpointer 只显示黑色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5930567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com