【发布时间】:2021-04-02 04:48:20
【问题描述】:
我希望为 DxWnd 工具(由 SourceForge 托管的开源程序)制作一个 opengl 通用纹理透明 hack。 hack 应该适用于每个使用 opengl 渲染 RGBA 纹理的程序。 DxWnd cah 挂钩并重定向来自库的所有调用,包括 opengl32.dll。 我已阅读并尝试实施有关使纹理透明的所有建议,包括启用 GL_BLEND、禁用 GL_CULL_FACE 和设置 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)。此外,还有一个强制所有纹理像素的 alpha 位的例程。 我预计,一旦完成,结果应该是一个半透明的场景,但这并没有发生。 例如,以下是 gl hexen II 的 3d 场景: 这是最终的结果,一些纹理不透明,大多数像素颜色丢失: 只是为了证明 DxWnd 能够操纵颜色像素(因此这不应该是问题的原因),这是具有重新着色每个纹理的过滤器的同一场景: 问题的原因可能是什么?我应该如何解决它?请注意,由于 DxWnd 正在挂钩一个通用程序,它可能很容易不得不面对具有相反目的的 opengl 调用!
【问题讨论】:
-
为了正确渲染透明 3D 模型,以特定顺序渲染多边形很重要。首先渲染远离相机的多边形,然后渲染靠近相机的多边形。
标签: c++ opengl textures transparent alpha