控制台中的openGL上下文

Rav*_*ven 2 opengl console openglcontext

我想使用openGL的某些功能,但与呈现可视内容无关.有没有办法在没有任何依赖项的情况下创建它(不是对windows,也不是某些包[SDL,SFML,GLUT])?只允许使用的库是没有外部库的库,就像我使用的GLEW一样.

dat*_*olf 5

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

在Windows上,最简单的方法是创建不可见的窗口,只是使用CreateWindowEx创建的窗口,而不是使用ShowWindow创建的窗口; 你甚至不需要事件处理循环.在此窗口中,您可以像往常一样创建OpenGL上下文,但不是渲染到窗口帧缓冲区,而是渲染到帧缓冲区对象.

在X11/GLX上它更加直截了当:X11/GLX提供没有扩展的PBuffers(Windows也有PBuffers,但是创建一个你需要一个普通的OpenGL上下文).所以在X11上你可以创建一个没有代理窗口的PBuffer.PBuffer iteself可以渲染为屏幕外缓冲区; 如果实现支持它们,帧缓冲对象也可以在PBuffer中工作.使用带有帧缓冲对象的不可见窗口,就像使用Windows一样,也可以使用.无论哪种方式,当前的驱动程序X11必须是活动的和绑定的控制台,所以你不能在后台启动额外的X服务器并让你的屏幕外渲染发生在那里,但这只是驱动程序的限制,而不是X11的限制,GLX或OpenGL.

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

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