MCPcopy Create free account
hub / github.com/DanielChappuis/reactphysics3d / create

Method create

testbed/opengl-framework/src/FrameBufferObject.cpp:44–86  ·  view source on GitHub ↗

Create the frame buffer object

Source from the content-addressed store, hash-verified

42
43// Create the frame buffer object
44bool FrameBufferObject::create(uint width, uint height, bool needRenderBuffer) {
45
46 // Destroy the current FBO
47 destroy();
48
49 // Check that the needed OpenGL extensions are available
50 bool isExtensionOK = checkOpenGLExtensions();
51 if (!isExtensionOK) {
52 std::cerr << "Error : Impossible to use Framebuffer Object on this platform" << std::endl;
53 assert(false);
54 return false;
55 }
56
57 // Generate a new FBO
58 glGenFramebuffers(1, &mFrameBufferID);
59 assert(mFrameBufferID != 0);
60
61 // If we also need to create a render buffer
62 if (needRenderBuffer) {
63
64 // Generate the render buffer
65 glGenRenderbuffers(1, &mRenderBufferID);
66 assert(mRenderBufferID != 0);
67
68 glBindRenderbuffer(GL_RENDERBUFFER, mRenderBufferID);
69 glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT32, width, height);
70 glBindFramebuffer(GL_FRAMEBUFFER, mFrameBufferID);
71 glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER,
72 mRenderBufferID);
73 glBindRenderbuffer(GL_RENDERBUFFER, 0);
74 glBindFramebuffer(GL_FRAMEBUFFER, 0);
75 }
76
77 // Check the FBO status
78 GLenum statusFBO = glCheckFramebufferStatus(GL_FRAMEBUFFER);
79 if(statusFBO != GL_FRAMEBUFFER_COMPLETE) {
80 std::cerr << "Error : An error occured while creating the Frame Buffer Object !" << endl;
81 assert(false);
82 return false;
83 }
84
85 return true;
86}
87
88// Destroy the FBO
89void FrameBufferObject::destroy() {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected