gpt4 book ai didi

linux - 无法在 Ubuntu 上运行我自己的 OpenGL 3 程序

转载 作者:太空狗 更新时间:2023-10-29 11:04:52 26 4
gpt4 key购买 nike

我正在试验 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* 包可用。

这是一些驱动程序信息(我没有专有驱动程序,集成的 Intel 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 版才引入?

为什么 glewIsSupported 即使对于版本 1.0 也会失败?

我的印象是我没有实际实现 API 的库和/或驱动程序,但根据 glxinfo 似乎我有,这让我觉得开发库有问题,但我不知道对那里发生的事情有一个连贯的画面。

基本上,我需要做什么才能让我的程序编译/链接/运行?

我知道 Ubuntu 不是一个很好的开发环境,但请不要建议我更改发行版。一定有办法!

最佳答案

My main() starts with glewInit and glutInit

没有。在 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;
}

关于linux - 无法在 Ubuntu 上运行我自己的 OpenGL 3 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18192802/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com