【发布时间】:2012-03-06 17:02:16
【问题描述】:
我对 OpenGL 有点陌生。我已经将它用于非常简单的东西,例如渲染 Textures(2D) 和基本的 MODELVIEW 转换,但现在我想以类似于 MODELVIEW 堆栈的方式修改 alpha 值。
我基本上有一个 glTex 类,它在对其应用某些变换后在某个点渲染纹理。 (平移、旋转、Alpha。)现在,这适用于简单图像之类的简单事物,但如果我想画一些更复杂的东西,比如简单的网格。我会翻译到网格的所需位置,然后绘制它的每个部分。这很好用,因为我通常在渲染纹理之前和之后调用 glPushMatrix() 和 glPopMatrix()。
当我想控制网格的alhpa时,问题就出现了。假设我想以 0.50 alpha 渲染它。我可以遍历它的每个组件并更改它们的 alpha 值,但这意味着如果网格的某些部分由较小的部分组成,它们将不得不做同样的事情,或者如果它们本身的较小部分具有 alpha 值我会必须计算一个全新的 alpha,这会变成一个非常漫长的过程。
有什么方法可以得到一个像 MODELVIEW 那样的 alpha 堆栈吗?或者有什么更好的办法吗?
示例 - 网格以 0.5 alpha 呈现。如果它有一个通常以 0.25 alpha 呈现的组件,那么它现在将以 0.125 alpha 呈现
顺便说一句,我将 glBlendFunc 设置为 GL _SRC _ALPHA 和 GL _ONE _MINUS _SRC _ALPHA。
【问题讨论】:
标签: opengl