混合使用不同的OpenGL版本

时间:2013-03-25 01:30:04

标签: opengl blend

下面是我用来实现混合工作原理的一段代码:

glDisable(GL_DEPTH_TEST);
glDisable(GL_BLEND);

glBegin(GL_QUADS);
    glColor4f(1.0f, 0.0f, 0.0f, 0.5f);
    glVertex3i(2, 0, 0);
    glVertex3i(2, 6, 0);
    glVertex3i(6, 6, 0);
    glVertex3i(6, 0, 0);
glEnd();

glEnable(GL_BLEND);

glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_DST_ALPHA);

glBegin(GL_QUADS);
    glColor4f(0.0, 1.0, 0.0, 0.5f);
    glVertex3i(3, 2, -1);
    glVertex3i(3, 8, -1);
    glVertex3i(8, 8, -1);
    glVertex3i(8, 2, -1);
glEnd();

问题是:它在我的笔记本电脑上显示了我想要的东西,这意味着两个四边形的交叉点被混合,并且在黑色背景上留下的绿色四边形区域也混合了alpha为0.0的背景。但是,在另一台PC上,只显示红色四边形......

笔记本电脑上的OpenGL是2.0,而PC上的OpenGL是4.0以上。我想知道问题是否是OpenGL的版本。

顺便说一句:我想知道当我想画一个半透明和不透明的物体时我应该遵循的顺序;我只使用这个演示来说明如果我们不遵循它会有多少麻烦......

0 个答案:

没有答案