下面是我用来实现混合工作原理的一段代码:
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的版本。
顺便说一句:当我想绘制半透明和不透明的对象时,我知道我应该遵循的顺序;我只是用这个demo来说明如果我们不遵循它会有多大的麻烦......