2011-09-24 69 views
1

我想使用openGL的某些功能,但不涉及渲染可视内容。有没有办法创建它没有任何依赖关系(不是窗口,也不是一些包[SDL,SFML,GLUT])?只有那些没有外部库的图书馆,就像我使用的GLEW一样。控制台中的openGL上下文

+1

没有上下文,OpenGL的哪些功能会有用?这没有什么意义。 –

+0

计算着色器,投影,实际上很多事情..请不要建议我使用CUDA或自己编程,当然这是可能的,但我想知道是否可以做到这一点(而这样做的代码越少,更好的 – Raven

+0

我不明白你对“外部库”这个词的用法,没有WGL和GLX函数,就像Win32或者X11一样,GLEW不能工作,事实上,Win32提供了WGL函数,就像X11提供的那样GLX函数,所以阻止你使用FreeGLUT或GLFW的逻辑也会阻止你使用GLEW。 –

回答

1

什么是可以静态链接并可以创建上下文的最轻的跨平台库。

你如何定义“最轻”?

除了创建OpenGL窗口以外,其他两个最少的跨平台库是FreeGLUTGLFW

FreeGLUT有大约5.2MB的分布(解压后),而GLFW有2.6MB的发行版。这是否使它“更轻”? FreeGLUT编译的静态库,在VS2008的发布模式下,大约为500KB;在类似的编译下,GLFW是120KB。这是否使它“更轻”?

+0

你为什么问我?我不知道大小是否让库更轻。看起来如此,这可能不是真的......这就是我在这里问的原因。当然,我可以使用过剩并且没问题,但是我想在这里问是否有什么我不知道的和你的个人意见,因为你可能比我更熟练。 – Raven

+1

@Raven我问你,因为“打火机”这个词完全是主观的。对于“重”或“轻”是没有客观标准的。我的个人意见是...我不在乎。如果我想明确要求一个小的可执行文件,我只会关心“轻量级”或“重度”库。我**关心的是文档质量,易用性和整体实用功能。 –

+0

你有很好的观点,这是非常主观的,取决于我刚刚做了什么。最后我选择了SFML,因为我意识到它的功能被分成了5个库和一个我需要的 - 窗口只有56 kb。创建上下文也只是一个问题。我知道堆栈溢出应该用于找出具体问题的答案,但是我发现很多时候指向正确的方向会更好。 – Raven

4

你想要做的事就是通常称为离屏渲染。理论上它可能非常好,但是实际的实现有很多警告。最重要的是所有主要的高性能实现:即使没有渲染窗口可见,您仍然需要图形系统正在运行并处于活动状态,并且您的程序将在此图形系统的环境中运行。

在Windows上,最直接的方式去创造不可见的窗口,你CreateWindowEx创建只是一个窗口,但不与的ShowWindow图;你甚至不需要事件处理循环。在这个窗口中,像往常一样创建OpenGL上下文,但不是渲染到窗口帧缓冲区,而是渲染到帧缓冲区对象。在X11/GLX上,它更直接:X11/GLX提供没有扩展的PBuffers(Windows也有PBuffers,但是为了创建一个,你首先需要一个常规的OpenGL上下文)。所以在X11上,您可以创建一个没有代理窗口的PBuffer。 PBuffer iteself可以被渲染为离屏缓冲区;如果实现支持它们,Frame Buffer Object也可以在PBuffer中工作。与Windows一样,使用带有帧缓冲区对象的不可见窗口也同样适用。无论哪种方式,与当前驱动程序X11必须是活动和绑定控制台,所以你可以而不是在后台启动一个额外的X服务器,并有你的离屏渲染发生在那里,但这只是一个驱动程序的限制,而不是的X11,GLX或OpenGL。

只允许使用没有外部库的库,就像我使用的GLEW一样。

您可以将GLEW静态链接到您的程序。如果你是硬核,你可以手动进行扩展加载,但你为什么要这么做?

相关问题