我试图渲染一个水族馆,为此我需要一个半透明的长方体。我做错了什么?
glEnableClientState(GL_VERTEX_ARRAY);
glEnable(GL_CULL_FACE);
glFrontFace(GL_CCW);
glCullFace(GL_FRONT);
glEnableClientState(GL_COLOR_ARRAY);
glDepthMask(GL_FALSE);
glVertexPointer(3,GL_FLOAT,0,myCubeVertices); //the cuboid model is under myCube
glColorPointer(3,GL_FLOAT,0,myCubeColors); //just blue
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDrawArrays(GL_QUADS,0,myCubeVertexCount);
glDepthMask(GL_TRUE);
glDisableClientState(GL_COLOR_ARRAY);
glDisable(GL_CULL_FACE);
glDisable(GL_BLEND);
答案 0 :(得分:0)
glColorPointer(3,GL_FLOAT,0,myCubeColors); //just blue
这是你出错的地方。 myCubeColors需要是RGBA格式,A表示alpha或transparancy,0.0表示完全透明。
所以它看起来像:
glColorPointer(4,GL_FLOAT,0,myCubeColors); //just blue
如果您希望使用RGB格式(也就是vec3而不是vec4),您还需要对正在使用的任何着色器进行适当的更改。
希望有所帮助。