2011-09-21 21 views
1

我有一个程序可以执行一些使用可选OpenGL呈现的GPU计算。 使用动态如下:使用OpenGL无法呈现 - >上下文

  1. 初始化函数(初始GLEW是最相关的)。
  2. 从文件加载网格到GPU(使用glGenBuffers与VBO相关的函数)。
  3. 并行处理此网格(GPU计算API)。
  4. 将网格保存到文件中。

我的问题是,当网格加载我使用opengl调用和wihout上下文创建我只是 得到分段错误。

编辑:问题的演变:

  1. 我失踪GL/glx.h我认为GL/glxew.h包括它,这要归功于得到固定的答案。
  2. 我失踪了glXMakeCurrent;因此它没有上下文。
  3. 修复后,它可以工作:)。

也感谢您的工具建议,我很乐意使用它们,这只是我需要这个特殊情况下的低级代码。

+1

注意:这不是论坛;在接受解决方案后,我们不会放置“已解决”。我们可以看到解决方案只是从解决方案旁边的绿色复选框被接受;) –

回答

2

我试图使上下文与此代码(我使用GLEW,所以我改变头GL/glxew.h但是这个代码的其余部分保持不变)

Don'd做到这一点。 glxew用于加载glx函数。你可能不需要它。

如果要使用GLEW,请将替换为GL/glew.h请保留GL/glx.h原样。

X11和GLX相当复杂,请考虑使用glfwsdl来代替。

+0

感谢澄清,即使当我知道glew是一个gl的扩展wrangler,我假定glxew没有什么glx做和更多。 – labotsirc

+0

我改变了GL/glx.h头文件,现在确实创建了上下文,但是在使用gl缓冲区函数时仍然出现错误。 – labotsirc

+0

@Cristobal:确保'glewInit'返回'GLEW_OK',并且你的OpenGL驱动实际上支持VBO。 –

1

只是疯狂地猜测在这里,但它可能是GLEW重新定义了一些自定义的glXChooseFBConfig? glXChooseFBConfig调用中的某些内容会将无效指针解引用。因此,glXChooseFBConfig本身无效,或者fbcount非常小,或者visual_attribs未正确终止。

+0

我认为这是问题之一,我现在距离更近一步。更新了问题 – labotsirc

1

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

由于您并未真正使用此上下文来绘制内容,因此我建议使用现成的工具来创建上下文。 GLFW或FreeGLUT将是最轻量级的选择。只要使用它们来创建上下文,做你需要做的事情,然后销毁它们创建的窗口。

+0

感谢澄清太多,我得到了更新的问题(也为什么我要避免高水平的工具) – labotsirc