【问题标题】:OpenGL alpha blending for lighting用于照明的 OpenGL Alpha 混合
【发布时间】:2015-06-16 18:55:33
【问题描述】:

我正在尝试在 opengl 中进行照明, 它的想法是正常渲染对象(使用任何 alpha)

GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); 

        GL11.glColor4d(0 , 0 , 1 , 0.5);
        GL11.glBegin(GL11.GL_QUADS);
        GL11.glVertex2d(100 , 100);
        GL11.glVertex2d(100 , 200);
        GL11.glVertex2d(200 , 200);
        GL11.glVertex2d(200 , 100);
        GL11.glEnd();

        GL11.glColor4d(0 , 0 , 1 , 1);
        GL11.glBegin(GL11.GL_QUADS);
        GL11.glVertex2d(300 , 100);
        GL11.glVertex2d(300 , 200);
        GL11.glVertex2d(400 , 200);
        GL11.glVertex2d(400 , 100);
        GL11.glEnd();

然后渲染灯光

GL14.glBlendFuncSeparate(GL11.GL_ZERO, GL11.GL_DST_COLOR, GL11.GL_ONE, GL11.GL_ONE);

        GL11.glColor4d(1 , 1 , 1 , 0.5);
        GL11.glBegin(GL11.GL_QUADS);
        GL11.glVertex2d(100 , 150);
        GL11.glVertex2d(150 , 150);
        GL11.glVertex2d(150 , 100);
        GL11.glVertex2d(100 , 100);
        GL11.glEnd();

所以它忽略 src 颜色 (GL11.GL_ZERO) 但保留 dst 颜色 (GL11.GL_DST_COLOR) 并且对于 alpha 它添加 src alpha 和 dst alpha,如果我的想法是正确的而不是 (100 , 100) 中的 rect 需要我一样颜色为正确的(300、100)但结果:

【问题讨论】:

    标签: opengl lwjgl alpha lighting blending


    【解决方案1】:

    BlendFunc 设置与颜色相乘的因子。 对于 Destinationcolor,您已将因子设置为 Color 本身,这将为您提供平方结果。

    尝试将 GL11.GL_DST_COLOR 设置为 GL11.GL_ONE

    【讨论】:

      猜你喜欢
      • 2011-12-14
      • 2013-11-16
      • 2015-03-30
      • 1970-01-01
      • 2015-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多