我想使用openGL的某些功能,但不涉及渲染可视内容。有没有办法创建它没有任何依赖关系(不是窗口,也不是一些包[SDL,SFML,GLUT])?只有那些没有外部库的图书馆,就像我使用的GLEW一样。控制台中的openGL上下文
回答
什么是可以静态链接并可以创建上下文的最轻的跨平台库。
你如何定义“最轻”?
除了创建OpenGL窗口以外,其他两个最少的跨平台库是FreeGLUT和GLFW。
FreeGLUT有大约5.2MB的分布(解压后),而GLFW有2.6MB的发行版。这是否使它“更轻”? FreeGLUT编译的静态库,在VS2008的发布模式下,大约为500KB;在类似的编译下,GLFW是120KB。这是否使它“更轻”?
你为什么问我?我不知道大小是否让库更轻。看起来如此,这可能不是真的......这就是我在这里问的原因。当然,我可以使用过剩并且没问题,但是我想在这里问是否有什么我不知道的和你的个人意见,因为你可能比我更熟练。 – Raven
@Raven我问你,因为“打火机”这个词完全是主观的。对于“重”或“轻”是没有客观标准的。我的个人意见是...我不在乎。如果我想明确要求一个小的可执行文件,我只会关心“轻量级”或“重度”库。我**关心的是文档质量,易用性和整体实用功能。 –
你有很好的观点,这是非常主观的,取决于我刚刚做了什么。最后我选择了SFML,因为我意识到它的功能被分成了5个库和一个我需要的 - 窗口只有56 kb。创建上下文也只是一个问题。我知道堆栈溢出应该用于找出具体问题的答案,但是我发现很多时候指向正确的方向会更好。 – Raven
你想要做的事就是通常称为离屏渲染。理论上它可能非常好,但是实际的实现有很多警告。最重要的是所有主要的高性能实现:即使没有渲染窗口可见,您仍然需要图形系统正在运行并处于活动状态,并且您的程序将在此图形系统的环境中运行。
在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静态链接到您的程序。如果你是硬核,你可以手动进行扩展加载,但你为什么要这么做?
- 1. 在linux控制台中创建openGL上下文(Raspbian)
- 2. OpenGL Viewer控制和渲染上下文
- 3. mac中的OpenGL上下文
- 4. Netduino no“Console.WriteLine”,控制台在当前上下文中不存在
- 5. 控制台菜单更新OpenGL窗口
- 6. OpenGL上下文(libgdx)
- 7. Javascript在控制台中工作,但不在脚本标记内...控制台的上下文是什么?
- 8. Chrome Javascript控制台默认为错误的上下文
- 9. 更改Wildfly管理控制台的上下文根目录
- 10. Spring应用程序上下文的Web控制台
- 11. 直接加载Chrome控制台的上下文菜单
- 12. 在控制台上
- 13. 如何将OpenGL上下文中的纹理复制到另一个上下文
- 14. 在后台线程中初始化OpenGL上下文
- 15. OpenGL上下文的大小
- 16. 有效的OpenGL上下文
- 17. 在MFC上面绘制OpenGL上下文的文本
- 18. 控制台式的文本控制?
- 19. 控制台上的SLIME
- 20. android中的opengl上下文的数量
- 21. QXcbIntegration:无法创建平台的OpenGL上下文
- 22. 控制台不显示用printf任何文本用OpenGL
- 23. Python中的Tkinter OpenGL上下文
- 24. 如何在PyCharm的Python控制台中向上/向下翻页?
- 25. Java控制台输出成为下一个控制台输入
- 26. 将Safari 6控制台的上下文更改为页面上的iframe
- 27. Eclipse控制台VS Netbeans的控制台
- 28. 在控制台中打印下载的文件
- 29. OpenGL/OpenTK:显示FBO在OpenGL控件中的后台线程上呈现
- 30. FreeGlut OpenGL上下文版
没有上下文,OpenGL的哪些功能会有用?这没有什么意义。 –
计算着色器,投影,实际上很多事情..请不要建议我使用CUDA或自己编程,当然这是可能的,但我想知道是否可以做到这一点(而这样做的代码越少,更好的 – Raven
我不明白你对“外部库”这个词的用法,没有WGL和GLX函数,就像Win32或者X11一样,GLEW不能工作,事实上,Win32提供了WGL函数,就像X11提供的那样GLX函数,所以阻止你使用FreeGLUT或GLFW的逻辑也会阻止你使用GLEW。 –