2009-07-16 18 views
1

我正在学习如何使用JOGL和OpenGL渲染纹理映射四边形。我有一个测试程序和一个测试四元组,我想出了如何启用GL_BLEND,以便我可以指定一个顶点的alpha值来制作具有某种梯度的四元组... ...但是现在我希望通过它来显示另一个纹理四方在相同的位置。你可以在同一点渲染两个四边形透明度?

绘制两个具有相同顶点位置的四边形不起作用,它只渲染第一个四边形。那么这是可能的,还是我需要基于我想要的基本构建一个自定义纹理,然后用这个纹理绘制一个四边形?我真的希望采取在这种情况下混合的优势...

+0

看看你正在使用哪个glDepthFunc,也许你正在使用GL_LESS/GL_GREATER,如果你使用GL_LEQUAL/GL_GEQUAL,它可以工作 - 尽管如果涉及到透明度,这也许并不重要。 – schnaader 2009-07-16 17:01:51

回答

2

有你使用在该glDepthFunc,也许你正在使用GL_LESS/GL_GREATER,它可能如果你使用GL_LEQUAL/GL_GEQUAL工作看看。

0

它很难辨认出你想达到什么问题的,但这里有一个尝试

对于透明度,在OpenGL中正常工作您需要从最远处到最近的相机绘制多边形。如果你的场景是静态的,这绝对是你可以做的事情。但是如果它正在旋转和移动,那么这通常是不可行的,因为您必须为每一帧对多边形进行排序。

更多内容可在此FAQ页中找到:
http://www.opengl.org/resources/faq/technical/transparency.htm

0

对于α混合,渲染器当时的透明物体的共混物的当前透明物体后面的所有颜色(从摄像机视点)被渲染。如果首先渲染透明对象,那么它就没有任何东西可以混合。如果它呈现第二,它将有一些东西来融合它。

尝试先渲染你的不透明四边形,然后渲染你的透明四次方。此外,请确保您的不透明四元组稍微落后于透明四元组(相对于相机),因此您不会获得z缓冲区条纹。