我的基于OpenGL的项目有问题。 我正试图在OpenGL-巴西利亚大教堂建造一个场地。
这是在我的电脑上编译时项目的样子: http://www.youtube.com/watch?v=-GCSmyi_XkQ
这是在任何其他PC上编译时项目的样子:http://www.youtube.com/watch?v=CsFVv9jmosg
这是主要代码:
float a=0;
while(!glfwGetKey(GLFW_KEY_ESC) && glfwGetWindowParam(GLFW_OPENED))
{
glClearColor(0.8,0.8,1,1);
glClear(GL_COLOR_BUFFER_BIT+GL_DEPTH_BUFFER_BIT+GL_STENCIL_BUFFER_BIT);
glPushMatrix();
gluLookAt(9*cos(a), 9*sin(a),4+6*sin(a), 0, 0, 0, 0, 0, 1);
a+=0.006;
glEnable(GL_STENCIL_TEST);
glColorMask(0, 0, 0, 0);
glDisable(GL_DEPTH_TEST);
glStencilFunc(GL_ALWAYS, 1, 1);
glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
draw_water();
glColorMask(1, 1, 1, 1);
glEnable(GL_DEPTH_TEST);
glStencilFunc(GL_EQUAL, 1, 1);
glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
glPushMatrix();
glScalef(1, 1, -1.5);
draw_venues_and_sky();
glPopMatrix();
glDisable(GL_STENCIL_TEST);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glColor4ub(150, 150, 255, 100);
draw_water();
glDisable(GL_BLEND);
draw_venues_and_sky();
glPopMatrix();
glfwSwapBuffers();
}
我想Stencil Buffer一定有问题,但我不知道是什么。