【问题标题】:overlapping partially transparent shapes in openGL在openGL中重叠部分透明的形状
【发布时间】:2011-07-31 17:11:59
【问题描述】:

请检查我找到的这段简洁的代码:

glEnable(GL_LINE_SMOOTH);

glColor4ub(0, 0, 0, 150);
mmDrawCircle( ccp(100, 100), 20, 0, 50, NO);

glLineWidth(40);
ccDrawLine(ccp(100, 100), ccp(100 + 100, 100));

mmDrawCircle( ccp(100+100, 100), 20, 0, 50, NO);

mmDrawCircle 和 ccDrawLine 只是以某种方式绘制这些形状 [FILLED]...(ccp 分别表示具有给定 x、y 坐标的点)。

我的问题....是的,你猜对了,线与圆圈重叠,并且都是半透明的(半透明)。所以,最终的形状就在那里,但重叠的部分变得更暗,整体形状看起来很丑。也就是说,如果我用 255 alpha 绘制就可以了。

有没有办法告诉 OpenGL 在重叠部分渲染其中一个形状??

(形状显然是一个带圆角的矩形..半圆..)

【问题讨论】:

    标签: opengl-es drawing transparency fill shapes


    【解决方案1】:

    您可以打开 GL_DEPTH_TEST 并首先渲染线条并靠近相机一点。然后在渲染下面的圆圈时,不会触及线条的片段。 (您也可以使用模板缓冲区来实现这样的效果)。

    请注意,这可能看起来仍然很难看。如果您想使用抗锯齿,您应该认真考虑应用哪种混合模式以及渲染图元的顺序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-01
      • 1970-01-01
      • 2011-10-29
      • 1970-01-01
      • 2018-09-10
      • 2011-08-15
      相关资源
      最近更新 更多