【发布时间】:2015-12-18 00:24:49
【问题描述】:
我有一个 GLViewWidget,我在其中添加了不同的对象 (GLMeshItem) 来设置这些属性,以启用透明度:
opt = {
GL_DEPTH_TEST: True,
'glBlendFunc': (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA),
}
obj.setGLOptions(opt)
这几乎可以工作,在以下意义上: 如果我有两个对象 obj1 和 obj2,并按照这个顺序将它们添加到小部件中,我会在 obj1 的后面看到 obj2,但不是相反。
我尝试以不同的顺序添加对象,但显然我会看到 obj1 在 obj2 后面,而不是相反。我怎样才能让它对所有对象无动于衷?
【问题讨论】:
-
您必须将它们从前排序并以正确的顺序绘制。
-
但是正如我所说的两个对象都是透明的,所以我希望它们以相同的方式表现,即 obj2 显示在 obj1 后面,而 obj1 显示在 obj2 后面,这取决于我观察的点.
-
唯一的方法(除了顺序无关的透明度)是根据它们的当前位置对每一帧中的对象进行排序并将它们拉回前面。