如何绘制在OpenGL中显示alpha纹理背后的线框?

时间:2012-06-07 18:01:55

标签: c++ opengl textures alpha wireframe

我有一个带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值,但它没有什么区别。

1 个答案:

答案 0 :(得分:3)

您是否启用了深度测试?我的第一个猜测是,因为你已经绘制了纹理立方体(并且可能被写入深度缓冲区),然后在同一个Z处立即绘制线框立方体的尝试未通过深度测试而且未被渲染。

尝试禁用它,或更改渲染多维数据集的顺序,然后更改线框。