0

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

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

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

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

窗口右侧以灰色块开始

这是调整大小后发生的示例

看起来 2 个 OpenGL 上下文并排存在?

有人对这个问题有任何想法吗?

这是我的代码:

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();
}
4

1 回答 1

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。这导致程序一起崩溃。

于 2013-05-24T17:37:33.023 回答