簡體   English   中英

無法在Ubuntu上運行我自己的OpenGL 3程序

[英]Can't run my own OpenGL 3 programs on Ubuntu

我正在試驗OpenGL 2.x和3.x教程。 程序編譯和鏈接,但然后段落在看似無辜的行,如

glGenBuffers (1, &m_buffer);

我的main()glewInitglutInit OpenGL 1程序編譯運行正常,它似乎是由glew包裝的新功能。

一個教程說我應該在嘗試其他任何事情之前進行此測試:

if (false == glewIsSupported ("GL_VERSION_2_0"))

即使我將版本字符串更改為GL_VERSION_1_0 ,此測試也始終失敗。

#define GL_VERSION_1_3 1是GL / gl.h中最高的此類定義,並且沒有GL / gl3.h或GL / GL3目錄。

apt說我安裝了freeglut3和freeglut3-dev,還有mesa-common-dev,libglew-1.6和libgl1-mesa-dev,但似乎沒有任何libgl3 *包可用。

這里有一些驅動程序信息(我沒有專有的驅動程序,集成了英特爾Ivy Bridge圖形和Nvidia附加卡,兩者都相信OpenGL 1.4兼容)

#> glxinfo | grep version
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
OpenGL version string: 3.0 Mesa 9.0
OpenGL shading language version string: 1.30

這一切讓我很困惑。

是否有我應該安裝的特定OpenGL2 / 3/4軟件包,或者理論上它是所有(Ubuntu)相同的開發包?

為什么GL_VERSION_1_3是最高版本,而glGenBuffers直到版本1.5才引入?

為什么即使對於1.0版本,glewIsSupported也會失敗?

我得到的印象是我沒有實際實現API的庫和/或驅動程序,但好像我根據glxinfo做了,這讓我覺得開發庫有問題,但我沒有關於那里發生的事情的連貫畫面。

基本上,我需要做什么才能讓我的程序編譯/鏈接/運行?

我知道Ubuntu不是一個很好的開發環境,但請不要建議我更改發行版。 一定有辦法!

我的main()glewInitglutInit

不。 glutCreateWindow()返回之前,您不會獲得當前的GL上下文。 之后你可以調用glewInit()glewIsSupported()

像這樣的東西:

#include <GL/glew.h>
#include <GL/glut.h>

...

int main( int argc, char** argv )
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_RGBA | GLUT_DOUBLE );
    glutInitWindowSize( 300, 300 );
    glutCreateWindow( "OpenGL" );
    glewInit();
    ...
    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM