2010-03-08 44 views
0

我收到一个段错误,GDB说是来自SDL_GL_SwapBuffers。但是,我无法想象为什么。 SDL文档没有提到调用swapBuffers的具体前提条件,除了允许使用双缓冲。这是我在初始化OpenGL时必须打开的选项还是硬件功能?SDL_GL_SwapBuffers段错误

我的代码:

http://pastie.org/859721

(忽略了未使用的变量,奇怪的意见和其他的事情我还没有prettied这根本上:。P)

回答

3

Documentation说:

说明

交换OpenGL的缓冲区,如果 双缓冲支持。

您正在使用SDL_GL_SwapBuffers()而不启用双缓冲。


SDL_Surface *screen = SDL_SetVideoMode(800, 600, 32, SDL_DOUBLEBUF | SDL_HWSURFACE); 
+0

这工作!谢谢 :) – RyanG 2010-03-10 12:26:31

0

你为什么混合GL和SDL呼叫?看起来像SDL应该给你一个OpenGL上下文并使其处于活动状态,然后你可以调用glSwapBuffers。

+2

这是相当普遍的...和glSwapBuffers不存在,我可以找到。有glutSwapBuffers和glxSwapBuffers ....交换缓冲区更多地是窗口工具包(在这种情况下是SDL)的功能。 – 2010-03-08 17:13:37

+2

ack,你是对的!我猜,使用一个将wgl *和gl *函数放入一个类并剥离前缀的工具箱太多了。 – 2010-03-08 17:23:00