2013-04-13 41 views
3

我一直在使用SFML創建上下文和OpenGL 3.0的3D應用程序。出於某種原因,當我嘗試使用OpenGL 3.0創建上下文時,它似乎將圖像縮小了一些,並且兩個圖像之間有一個黑色條,並且由於某種原因,屏幕似乎被清除爲綠色而不是紅色。如果我將上下文更改爲2.1,它通常會繪製。最初我使用現代OpenGL代碼時遇到了這個問題,但我提供了一個使用固定功能管道的示例,以便使問題更清楚。爲什麼使用Opengl 3.0上下文的SFML繪製兩次?

#include <SFML/Window.hpp> 
#include <SFML/OpenGL.hpp> 

int main() 
{ 
    // create the window 
    sf::ContextSettings settings; 
    settings.depthBits = 24; 
    settings.stencilBits = 8; 
    settings.antialiasingLevel = 4; 
    settings.majorVersion = 3; 
    settings.minorVersion = 0; 

sf::Window window(sf::VideoMode(800, 600), "OpenGL", sf::Style::Default, settings); 

// load resources, initialize the OpenGL states, ... 
glClearColor(1.0, 0.0, 0.0, 1.0); 

// run the main loop 
bool running = true; 
while (running) 
{ 
    // handle events 
    sf::Event event; 
    while (window.pollEvent(event)) 
    { 
     if (event.type == sf::Event::Closed) 
     { 
      // end the program 
      running = false; 
     } 
    } 

    // clear the buffers 
    glClear(GL_COLOR_BUFFER_BIT); 

    // draw... 
    glBegin(GL_TRIANGLES); 
    glVertex3f(0.0, 1.0, 0.0); 
    glVertex3f(-1.0,-1.0, 0.0); 
    glVertex3f(1.0,-1.0, 0.0); 
    glEnd(); 

    // end the current frame (internally swaps the front and back buffers) 
    window.display(); 
} 

return 0; 
} 

如果我改變這兩條線:

settings.majorVersion = 3; 
    settings.minorVersion = 0; 

對於這些:

settings.majorVersion = 2; 
    settings.minorVersion = 1; 

窗口通常繪製。

下面是正在發生的事情的截圖。 OpenGL 2.1 screenshot OpenGL 3.0 screenshot

第二個圖像有點搞砸了,因爲我的電腦滯後了。它不應該有那個橙色的音調。

我的設置是:

的Ubuntu 12.10 英特爾i7-3630QM 英特爾高清顯卡4000

從glxinfo: OpenGL渲染字符串:梅薩DRI英特爾(R)IvyBridge的移動 OpenGL的版本字符串:3.0梅薩9.0.2 OpenGL着色語言版本字符串:1.30

從lspci的: 內核驅動程序使用:I915

我認爲這可能是一個驅動程序問題,但我已經成功運行使用GLUT的OpenGL 3.0程序,並且沒有棄用的功能,所以它一定是在創建一個有效的OpenGL 3.0上下文並工作。

我很困惑,爲什麼會發生這種情況。

+0

嘗試在繪圖函數上面粘貼一個window.setActive()。 –

+0

什麼都不做 – matjoeman

+0

它是否與英特爾的Windows驅動程序一起使用? – genpfault

回答

0

SFML使用兼容性上下文,因爲它在內部仍然有一些舊式的opengl。你可以使用glBegin和glEnd之類的原因是因爲兼容性上下文。我沒有你的問題的答案,但它在一年前被問過。如果您有解決方案,請發佈。

相關問題