首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenGL Linux未读取GL_VERSION

OpenGL Linux未读取GL_VERSION
EN

Stack Overflow用户
提问于 2012-09-11 06:26:59
回答 3查看 494关注 0票数 2

我在Linux上有一个使用SDL的简单OpenGL程序,它只是尝试加载和打印OpenGL版本。

代码语言:javascript
复制
cout << "GL_VERSION  : " << glGetString(GL_VERSION) << endl;

当我运行程序时,它就挂起了,输出如下…它基本上看起来是在“等待”OpenGL库的响应:

代码语言:javascript
复制
GL_VERSION  : 

它链接到Nvidia Ubuntu OpenGL库(nvidia-current-dev pkg)。我确实在系统上安装了Mesa,但正如你从'lsof‘中看到的,它似乎正在使用Nvidia。

代码语言:javascript
复制
sdl-hack 29491 x  mem    REG               8,18 34639056 4212198 /usr/lib/nvidia-current/libnvidia-glcore.so.295.40
sdl-hack 29491 x  mem    REG               8,18    11728 4212207 /usr/lib/nvidia-current/tls/libnvidia-tls.so.295.40
sdl-hack 29491 x  mem    REG               8,18  1054832 4212209 /usr/lib/nvidia-current/libGL.so.295.40

请注意,我必须安装‘liblu1-mesa- dev’来提供lu.h,因为这不是Nvidia dev pkg的一部分。

不确定如何调试这个,有人能给我指出正确的方向吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-14 21:41:42

我解决了这个问题。我已经按照以下链接中的代码获得了一个初始工作版本:

http://www.sdltutorials.com/sdl-opengl-tutorial-basics

本文介绍了一些set属性调用:

代码语言:javascript
复制
SDL_GL_SetAttribute(SDL_GL_RED_SIZE,        8);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE,      8);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE,       8);
SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE,      8);

SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE,      16);
SDL_GL_SetAttribute(SDL_GL_BUFFER_SIZE,        32);

SDL_GL_SetAttribute(SDL_GL_ACCUM_RED_SIZE,    8);
SDL_GL_SetAttribute(SDL_GL_ACCUM_GREEN_SIZE,    8);
SDL_GL_SetAttribute(SDL_GL_ACCUM_BLUE_SIZE,    8);
SDL_GL_SetAttribute(SDL_GL_ACCUM_ALPHA_SIZE,    8);

SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS,  1);
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES,  2);

这些是在SDL_Init之后,但在SDL_SetVideoMode调用之前。删除它们可以使程序正常工作!

奇怪的是,这个问题只出现在包含Mesa和Nvidia GL库的Linux上。Mac OSX很好。

票数 0
EN

Stack Overflow用户

发布于 2012-09-14 03:54:05

不要在SDL_SetVideoMode()调用中将SDL_OPENGL与其他标志混在一起。嗯,你可以使用SDL_FULLSCREEN,但是你不需要SDL_HWSURFACE

特别是,SDL_GL_DOUBLEBUFFER不是这样使用的。内部执行:

代码语言:javascript
复制
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
SDL_SetVideoMode(640, 480, 32, SDL_OPENGL);
票数 1
EN

Stack Overflow用户

发布于 2012-09-14 03:50:22

当您在终端中输入glxgears时会发生什么?如果没有弹出显示齿轮旋转的窗口,则说明您的安装有问题。

如果您确实看到一个齿轮旋转的窗口,那么您没有像Nicol Bolas建议的那样正确地初始化OpenGL上下文。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12360301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档