remove some un-used data from b3Generic6DofConstraint

add GLRenderToTexture helper class
enable OpenGLTrueTypeFont test
This commit is contained in:
erwin coumans
2013-06-26 16:09:40 -07:00
parent 34394526f8
commit bb723f9fd1
7 changed files with 119 additions and 13 deletions

View File

@@ -0,0 +1,78 @@
///See http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-14-render-to-texture/
#include "GLRenderToTexture.h"
GLRenderToTexture::GLRenderToTexture()
:m_framebufferName(0)
{
}
void GLRenderToTexture::init(int width, int height)
{
glGenFramebuffers(1, &m_framebufferName);
glBindFramebuffer(GL_FRAMEBUFFER, m_framebufferName);
GLuint m_renderedTexture;
glGenTextures(1, &m_renderedTexture);
// "Bind" the newly created texture : all future texture functions will modify this texture
glBindTexture(GL_TEXTURE_2D, m_renderedTexture);
// Give an empty image to OpenGL ( the last "0" )
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGB, width, height, 0,GL_RGB, GL_UNSIGNED_BYTE, 0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
// The depth buffer
glGenRenderbuffers(1, &m_depthrenderbuffer);
glBindRenderbuffer(GL_RENDERBUFFER, m_depthrenderbuffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, width, height);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, m_depthrenderbuffer);
glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, m_renderedTexture, 0);
}
bool GLRenderToTexture::enable()
{
bool status = false;
// Set the list of draw buffers.
GLenum drawBuffers[2] = {GL_COLOR_ATTACHMENT0,0};
glDrawBuffers(1, drawBuffers);
// Always check that our framebuffer is ok
if(glCheckFramebufferStatus(GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE)
{
status = true;
}
return status;
}
void GLRenderToTexture::disable()
{
glBindFramebuffer( GL_FRAMEBUFFER, 0 );
glBindTexture(GL_TEXTURE_2D, 0);
}
GLRenderToTexture::~GLRenderToTexture()
{
glBindFramebuffer( GL_FRAMEBUFFER, 0 );
if (m_depthrenderbuffer)
glDeleteRenderbuffers(1,&m_depthrenderbuffer);
if(m_renderedTexture)
glDeleteTextures(1, &m_renderedTexture);
if( m_framebufferName)
{
glDeleteFramebuffers(1, &m_framebufferName);
}
}