我想在OpenGL中渲染模型。我在C++和OpenGL的第4天(是的,我已经很快学会了这一点),并且我在纹理方面略有停顿。如何让我的对象透明但仍然显示纹理?
我在制作纹理alpha工作时遇到了一些麻烦。在这张图片中,我有来自螺旋骑士的这个角色。正如你可以在头顶看到的那样,有那些白色的部分。
我有混合方法启用,什么我假设我在这里的混合功能设置为glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
,这就是为什么我问这个问题,是质地透明是工作,但纹理背后的三角形仍在显示。
如何让这些三角形看不见但仍能显示我的纹理?
谢谢。
Threre没有“纹理背后的三角形”。 GL不绘制纹理,它绘制原始图形。完全不清楚究竟发生了什么(你的纹理有哪些akoha值,你如何将纹理结合到最终的片段颜色等等)。 YOu也应该知道,混合将需要以正确的顺序绘制原语。在这种特殊情况下,你甚至可以通过不使用混合来解决这个问题,而只是通过基于alpha的丢弃来解决这个问题。 – derhass
你说_“只是通过基于alpha的丢弃。”_ - 我做了一些关于丢弃的研究,但是从我读过的内容可能会有点缓慢。有没有其他方法?我做了一些搜索替代方法并启用alpha测试,然后将alpha函数设置为'glAlphaFunc(GL_GREATER,0.0);'但似乎没有工作。 –
alpha测试已弃用。现代的方法在着色器中被丢弃。在这种情况下“慢”的真正含义很难预先说明。你可能会后退到深度测试,并且你会得到一定程度的非均匀控制流。但是,您获得订单独立性作为回报。 – derhass