OpenGL模板缓冲区错误

时间:2014-01-29 14:25:17

标签: opengl buffer

我的基于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一定有问题,但我不知道是什么。

0 个答案:

没有答案