我有一个带alpha通道的纹理立方体,并希望在立方体周围绘制一个线框框。我遇到的问题是线框没有通过纹理立方体的透明部分显示。如何在后面显示线框?
以下是我用来绘制两个多维数据集的代码:
glLoadIdentity();
glTranslatef(0.0f, 0.0f, z);
glRotatef(xRotation, 1.0f, 0.0f, 0.0f);
glRotatef(yRotation, 0.0f, 1.0f, 0.0f);
glRotatef(zRotation, 0.0f, 0.0f, 1.0f);
// Draw Textured
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glEnable(GL_TEXTURE_2D);
glEnable(GL_LIGHTING);
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
glBindTexture(GL_TEXTURE_2D, _images[_filter]);
glBegin(GL_QUADS);
DrawTexturedCube();
glEnd();
// Draw Wireframe
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glDisable(GL_TEXTURE_2D);
glDisable(GL_LIGHTING);
glColor3f(1.0f, 0.0f, 0.0f);
glBegin(GL_QUADS);
DrawWireframeCube();
glEnd();
xRotation += xSpeed;
yRotation += ySpeed;
zRotation += zSpeed;
我的Init中的混合功能正在使用:
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
我在绘制纹理之前尝试了不同的glColor4f alpha值,但它没有什么区别。
答案 0 :(得分:3)
您是否启用了深度测试?我的第一个猜测是,因为你已经绘制了纹理立方体(并且可能被写入深度缓冲区),然后在同一个Z处立即绘制线框立方体的尝试未通过深度测试而且未被渲染。
尝试禁用它,或更改渲染多维数据集的顺序,然后更改线框。