- // So erzeugt man den Multisampled FBO (jaja ich weis hier müsste ich eigentich erst noch prüfen ob Multisampling überhaupt unterstützt wird, mach ich aber noch ;)
- procedure TMeFrameBufferEXT.FCreate();
- begin
- // Create FrameBuffer and activate Framebuffer
- glGenFramebuffers(1, @FGLName);
- glBindFramebuffer(GL_FRAMEBUFFER, FGLName);
- // Create a ColorBuffer, activate Colorbuffer and set size
- glGenRenderbuffers(1, @FGLColorName);
- glBindRenderbuffer(GL_RENDERBUFFER, FGLColorName);
- glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER_EXT, 4, GL_RGB8, FSize.X, FSize.Y);
- // Create a DepthBuffer, activate Depthbuffer and set size
- glGenRenderbuffers(1, @FGLDepthName);
- glBindRenderbuffer(GL_RENDERBUFFER, FGLDepthName);
- glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER_EXT, 4, GL_DEPTH_COMPONENT24, FSize.X, FSize.Y);
- // Attach DepthBuffer to FrameBuffer
- glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_RENDERBUFFER_EXT, FGLColorName);
- glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, FGLDepthName);
- // Check For Errors
- CheckFBO();
- // Finish (Set Default)
- glBindFramebuffer(GL_FRAMEBUFFER, 0);
- glBindRenderbuffer(GL_RENDERBUFFER, 0);
- glBindTexture(GL_TEXTURE_2D, 0);
- end;
- // Den FrameBuffer in das Fenster kopieren.
- procedure TMeFrameBufferEXT.Render();
- begin
- glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, FGLName);
- glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, 0);
- glBlitFramebufferEXT(0, 0, FSize.X, FSize.Y, 0, 0, ActiveMeleeEngine.Viewport.X, ActiveMeleeEngine.Viewport.Y, GL_COLOR_BUFFER_BIT, GL_NEAREST);
- end;