우분투 시스템과 FBO를 사용하여 화면에서 뭔가를 렌더링하는 OS X로 작성된 명령 행 응용 프로그램이 있습니다. 이것은 코드의 일부입니다.OpenGL 3.2+ w/FBO를 사용하여 오프 스크린 렌더링 Linux
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/
끝에를 객체, 그게 옳은 것입니다 (나는 이것에 대해 틀릴 수도 있습니다).
누구나 더 나은 접근 방식이나 아이디어가 있습니까?
글쎄, 그렇습니다. 렌더 버퍼는 요즘 많이 사용되지 않습니다. –
당신은 정교 할 수 있습니까? 렌더링 버퍼 란 무엇을 의미합니까? 더 나은 크로스 플랫폼 대안이 있습니까? – csotiriou
"renderbuffer"는 무엇을 의미할까요? 귀하의 코드가 그것을 사용하고 있습니다. –