使用OpenGL进行无渲染 - >上下文

时间:2011-09-21 19:16:44

标签: opengl segmentation-fault gpu

我有一个使用Optional OpenGL渲染进行GPU计算的程序。 使用动态如下:

  1. init函数(init GLEW是最相关的)。
  2. 从文件加载网格到GPU(使用glGenBuffers是制作VBO的相关函数)。
  3. 并行处理此网格(GPU Computing API)。
  4. 将网格保存到文件中。
  5. 我的问题是,当网格加载时,我使用opengl调用和wihout上下文创建 得到分段错误。

    编辑:问题的演变:

    1. 我错过了GL / glx.h我认为GL / glxew.h包含了它,这要归功于已修复的答案。
    2. 我错过了glXMakeCurrent;因此它没有任何背景。
    3. 修复后,它可以工作:)。
    4. 也感谢工具建议,我很乐意使用它们只是我需要这个特殊情况的低级代码。

3 个答案:

答案 0 :(得分:2)

  

我尝试使用此代码创建上下文(我正在使用glew,所以我将标题更改为GL / glxew.h,但此代码的其余部分保持不变)

不要这样做。 glxew用于加载glx函数。你可能不需要它。

如果您想使用GLEW,请将GL/gl.h替换为GL/glew.h原样GL/glx.h

X11和GLX非常复杂,请考虑使用sdlglfw代替。

答案 1 :(得分:1)

在这里疯狂猜测,但GLEW是否可以通过自定义重新定义glXChooseFBConfig? glXChooseFBConfig调用中的某些内容取消引用无效指针。因此要么glXChooseFBConfig本身无效,要么fbcount这么小,或者visual_attribs没有正确终止。

答案 2 :(得分:1)

GLEW与上下文创建无关。它是一个OpenGL加载库;它加载OpenGL函数。它需要你有一个OpenGL上下文才能运行。

由于你并没有真正使用这个上下文来绘制东西,我建议使用现成的工具来创建上下文。 GLFW或FreeGLUT将是最轻量级的替代品。只需使用它们来创建上下文,执行您需要做的事情,然后销毁它们创建的窗口。