我有一台Ubuntu机器,还有一个在OS X上编写的命令行应用程序,使用FBOs在屏幕外呈现某些内容。这是代码的一部分。
"系统提供者"是围绕OS X的NSOpenGLContext的C++包装器,仅用于创建渲染上下文并使其当前,而不将其与窗口关联。所有渲染都发生在FBO中。
我正在尝试使用相同的方法来使用GLX在Linux(Ubuntu)上进行操作,但我很难做到这一点,因为我发现GLX需要像素缓冲区。
我正在尝试按照此教程进行操作:
有没有更好的方法或想法?
this->systemProvider->setupContext(); //be careful with this one. to add thingies to identify if a context is set up or not
this->systemProvider->useContext();
glewExperimental = GL_TRUE;
glewInit();
GLuint framebuffer, renderbuffer, depthRenderBuffer;
GLuint imageWidth = _viewPortWidth,
imageHeight = _viewPortHeight;
//Set up a FBO with one renderbuffer attachment
glGenFramebuffers(1, &framebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
glGenRenderbuffers(1, &renderbuffer);
glBindRenderbuffer(GL_RENDERBUFFER, renderbuffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_RGB, imageWidth, imageHeight);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, renderbuffer);
//Now bind a depth buffer to the FBO
glGenRenderbuffers(1, &depthRenderBuffer);
glBindRenderbuffer(GL_RENDERBUFFER, depthRenderBuffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, _viewPortWidth, _viewPortHeight);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthRenderBuffer);
"系统提供者"是围绕OS X的NSOpenGLContext的C++包装器,仅用于创建渲染上下文并使其当前,而不将其与窗口关联。所有渲染都发生在FBO中。
我正在尝试使用相同的方法来使用GLX在Linux(Ubuntu)上进行操作,但我很难做到这一点,因为我发现GLX需要像素缓冲区。
我正在尝试按照此教程进行操作:
http://renderingpipeline.com/2012/05/windowless-opengl/
在最后,它使用像素缓冲区来使上下文当前,我听说这已经被弃用了,我们应该放弃它,转而使用帧缓冲对象,是这样吗(我可能错了)?有没有更好的方法或想法?