Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "ShadowMap.h"
- ShadowMap::ShadowMap(vec2 size, vec2 pixelOffset){
- m_size = size;
- m_pixelOffset = pixelOffset;
- glGenTextures(1, &m_texture);
- glBindTexture(GL_TEXTURE_2D, m_texture);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_R_TO_TEXTURE);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL);
- glTexParameteri(GL_TEXTURE_2D, GL_DEPTH_TEXTURE_MODE, GL_INTENSITY);
- glTexImage2D(GL_TEXTURE_2D,
- 0,
- GL_DEPTH_COMPONENT,
- GLsizei(m_size.x),
- GLsizei(m_size.y),
- 0,
- GL_DEPTH_COMPONENT,
- GL_UNSIGNED_BYTE,
- NULL);
- glBindTexture(GL_TEXTURE_2D, 0);
- glGenFramebuffers(1, &m_fbo); // FBO erstellen
- glBindFramebuffer(GL_FRAMEBUFFER, m_fbo);
- glDrawBuffer(GL_NONE);
- glReadBuffer(GL_NONE);
- glFramebufferTexture2D(GL_FRAMEBUFFER,
- GL_DEPTH_ATTACHMENT,
- GL_TEXTURE_2D,
- m_texture,
- 0);
- if(glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE){
- cerr<<"Framebuffer could not be initalized!"<<endl;
- }
- glBindFramebuffer(GL_FRAMEBUFFER, 0);
- }
- ShadowMap::~ShadowMap(){
- glDeleteBuffers(1, &m_texture);
- glDeleteBuffers(1, &m_fbo);
- delete &m_size;
- delete &m_pixelOffset;
- }
- void ShadowMap::updateTexture(vec2 v){
- m_size = v;
- glBindTexture(GL_TEXTURE_2D, m_texture);
- glTexImage2D(GL_TEXTURE_2D,
- 0,
- GL_DEPTH_COMPONENT,
- GLsizei(m_size.x),
- GLsizei(m_size.y),
- 0,
- GL_DEPTH_COMPONENT,
- GL_UNSIGNED_BYTE,
- NULL);
- glBindTexture(GL_TEXTURE_2D, 0);
- }
- void ShadowMap::updateTexture(float x, float y){
- updateTexture(vec2(x, y));
- }
- void ShadowMap::setPixelOffset(vec2 v){
- m_pixelOffset = v;
- }
- void ShadowMap::setPixelOffset(float x, float y){
- setPixelOffset(vec2(x, y));
- }
- GLuint ShadowMap::getTextureID(){
- return m_texture;
- }
- GLuint ShadowMap::getFBO(){
- return m_fbo;
- }
- vec2 ShadowMap::getTextureSize(){
- return m_size;
- }
- float ShadowMap::getTextureWidth(){
- return m_size.x;
- }
- float ShadowMap::getTextureHeight(){
- return m_size.y;
- }
- vec2 ShadowMap::getPixelOffset(){
- return m_pixelOffset;
- }
Advertisement
Add Comment
Please, Sign In to add comment