#include ".\rendertexture.h" RenderTexture::RenderTexture(void) { } RenderTexture::~RenderTexture(void) { } int RenderTexture::Initialize(int width, int height,const char *strMode, bool rect) { m_pBuffer=new PBuffer(strMode,false); bool ret=m_pBuffer->Initialize(width,height,false,true); if(!ret)return 0; if(rect)m_textype=GL_TEXTURE_RECTANGLE_NV; else m_textype=GL_TEXTURE_2D; glGenTextures(1, &m_pbufferColorTextureID); glBindTexture(m_textype, m_pbufferColorTextureID); glTexParameteri(m_textype, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(m_textype, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(m_textype, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(m_textype, GL_TEXTURE_MIN_FILTER, GL_NEAREST); if(m_pBuffer->m_HasDepthTexture) { glGenTextures(1, &m_pbufferDepthTextureID); glBindTexture(m_textype, m_pbufferDepthTextureID); glTexParameteri(m_textype, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(m_textype, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(m_textype, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(m_textype, GL_TEXTURE_MIN_FILTER, GL_NEAREST); } if(m_pBuffer->m_HasAuxBuffers) { glGenTextures(1, &m_pbufferAux1ID); glBindTexture(m_textype, m_pbufferAux1ID); glTexParameteri(m_textype, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(m_textype, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(m_textype, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(m_textype, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glGenTextures(1, &m_pbufferAux2ID); glBindTexture(m_textype, m_pbufferAux1ID); glTexParameteri(m_textype, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(m_textype, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(m_textype, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(m_textype, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glGenTextures(1, &m_pbufferAux3ID); glBindTexture(m_textype, m_pbufferAux1ID); glTexParameteri(m_textype, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(m_textype, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(m_textype, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(m_textype, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glGenTextures(1, &m_pbufferAux4ID); glBindTexture(m_textype, m_pbufferAux1ID); glTexParameteri(m_textype, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(m_textype, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(m_textype, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(m_textype, GL_TEXTURE_MIN_FILTER, GL_NEAREST); } } int RenderTexture::EnableTarget(void) { m_pBuffer->Activate(); return 1; } int RenderTexture::DisableTarget(void) { m_pBuffer->Deactivate(); return 1; } GLuint RenderTexture::getColorTextureID(void) { return m_pbufferColorTextureID; } GLuint RenderTexture::getDepthTextureID(void) { return m_pbufferDepthTextureID; }