SFML OpenGL应用程序工件 - 发生了一些“奇怪”的事情

时间:2013-05-24 16:55:28

标签: graphics sfml artifact

首先,对于糟糕的问题标题感到抱歉,我不确切知道要放什么!

所以我有一个从SFML Window上下文运行的OpenGL应用程序。

我之前发过一个关于性能不佳的问题,但这个问题现在似乎已经解决了。

正如你在我上传的图像上看到的那样,有些奇怪的事情正在发生。我真的不知道如何描述它,但看起来窗口的右半边不应该在那里!

Right Hand side of window starts with grey block

This is an example of what happens after resize

It looks like 2 OpenGL contexts exist side by side?

任何有关此问题的想法?

这是我的代码:

sf::ContextSettings settings;
settings.depthBits = 32;
settings.stencilBits = 8;
settings.antialiasingLevel=4;
settings.majorVersion = 3;
settings.minorVersion = 0;

sf::Window window(sf::VideoMode(800, 600), "insert title", sf::Style::Default, settings);
window.setVerticalSyncEnabled(true);


bool running = true;
while(running)
{
    sf::Event e;
    while(window.pollEvent(e))
    {
        if(e.type == sf::Event::Closed)
        {
            running = false;
        }

        if(e.type == sf::Event::Resized)
        {
            glViewport(0, 0, e.size.width, e.size.height);
            gluLookAt(0,0,-1, 0,0,0, 0,1,0);;
        }
    }


    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);

    glutSolidSphere(1, 12, 12);

    window.display();
}

1 个答案:

答案 0 :(得分:0)

原来这是由复制和粘贴代码引起的。

在显示的代码之上,我有一行:

sf::ContextSettings settings;
settings.depthBits = 24;
settings.stencilBits = 0;
settings.antialiasingLevel = 0;
settings.majorversion = 3;
settings.minorversion = 2;

次要版本不正确。删除行的settings.majorversion = 3;'和'settings.minorversion = 2;'解决了这个问题!

作为一项实验,我将专业修改为4.这导致程序崩溃。