2017-06-01 70 views
0

我想呈现一个水族馆,为此我需要一个半透明的长方体。我究竟做错了什么?带固定功能OpenGL的半透明?

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); 

这是怎么看起来像现在: aquarium

回答

0
glColorPointer(3,GL_FLOAT,0,myCubeColors); //just blue 

这是你出了问题。 myCubeColors需要为RGBA格式,A表示透明度为alpha或透明度,0.0是完全透明的。

因此,它看起来像:

glColorPointer(4,GL_FLOAT,0,myCubeColors); //just blue 

你还需要,如果他们期待RGB格式(又名一个VEC 3,而不是一个vec4)您所使用的着色器适当的修改。

希望有所帮助。