我有一个任务是在C++中为Window和Linux实现屏幕外OpenGL渲染器.我已经使用LWJGL lib用Java编写了这样的版本.我使用了PBuffer对象,它根据使用的OS创建了Pbuffers.首先我想到的重新实现完整的PBuffer创建逻辑就像我在LWJGL的原生源中完成一样.然后我在StackOverflow.com上阅读这篇文章,建议使用标准上下文创建,让我们说使用GLFW(这是跨平台)但是不要创建实际的窗口.这是正确的方法吗?在这种情况下使用Pbuffer的利弊是什么?
更新: 我只想强调我使用FBO渲染帧,所以我的问题不在于如何在屏幕外模式下渲染,而是如何在Windows和Linux操作系统中创建没有窗口的上下文.
我强烈建议不再使用PBuffers,而是使用帧缓冲对象(FBO).FBO提供了更好的性能,因为使用它们不需要上下文切换,并且它们还具有其他几个优点.
LWJGL支持FBO,但GLFW "仅仅"用于OpenGL的跨平台设置而不是用于渲染.为方便跨平台的FBO使用,我建议在GLFW之上使用像OGLplus这样的库.请参阅此处获取渲染到纹理的示例.