gpt4 book ai didi

c++ - 如何在 OpenGL 中绘制显示在 alpha 纹理后面的线框?

转载 作者:行者123 更新时间:2023-11-30 03:01:37 25 4
gpt4 key购买 nike

我有一个带 alpha channel 的纹理立方体,我想在立方体周围绘制一个线框框。我遇到的问题是线框没有通过纹理立方体的透明部分显示。如何显示背面的线框?

这是我用来绘制两个立方体的代码:

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 值,但并没有什么不同。

最佳答案

您是否启用了深度测试?我的第一个猜测是,由于您已经绘制了带纹理的立方体(并且可能已写入深度缓冲区),因此尝试立即在同一 Z 绘制线框立方体会导致深度测试失败并且不会被渲染。

尝试禁用它,或更改渲染立方体和线框的顺序。

关于c++ - 如何在 OpenGL 中绘制显示在 alpha 纹理后面的线框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10937280/

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