1#include "FrameBuffer.h"
5FrameBuffer::FrameBuffer(
int w,
int h)
9 glGenFramebuffers(1, &fbo);
10 glBindFramebuffer(GL_FRAMEBUFFER, fbo);
11 glGenTextures(1, &colorTexture);
12 glBindTexture(GL_TEXTURE_2D, colorTexture);
13 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, w, h, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
14 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
15 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
16 glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, colorTexture, 0);
17 glGenTextures(1, &depthTexture);
18 glBindTexture(GL_TEXTURE_2D, depthTexture);
19 glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, w, h, 0, GL_DEPTH_COMPONENT, GL_FLOAT, 0);
20 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
21 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
22 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
23 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
24 glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, depthTexture, 0);
25 glBindFramebuffer(GL_FRAMEBUFFER, 0);
28FrameBuffer::~FrameBuffer()
30 glDeleteTextures(1, &colorTexture);
31 glDeleteTextures(1, &depthTexture);
32 glDeleteFramebuffers(1, &fbo);
35void FrameBuffer::Begin()
37 glBindFramebuffer(GL_FRAMEBUFFER, fbo);
38 glViewport(0, 0, width, height);
41uint32_t FrameBuffer::End()
46uint32_t FrameBuffer::GetColorTexture()
51uint32_t FrameBuffer::GetDepthTexture()
56uint32_t FrameBuffer::GetRendererID()