renderText funktioniert nicht in QGLFramebufferObject
Verfasst: 16. Mai 2013 20:32
Hallo liebe Experten,
ich frage mich, ob ich mit der QGLWidget Funktion renderText auch in ein QGLFrameBufferObject rendern kann.
Meine Versuche diesbezüglich schlugen fehl. Der Text wird in das QGLWidget ausgegeben.
Ich versuchte das ungefähr so:
Bisher hatte ich die selbe Funktionalität durch Benutzung der ftgl Bibliothek erreicht, aber ich wollte die Abhängigkeit von dieser Bibliothek loswerden.
Die Frage, die sich mir stellt, ist allgemein:
Wie kann ich Text in ein QGLFrameBufferObject rendern?
Gruß,
Peter
ich frage mich, ob ich mit der QGLWidget Funktion renderText auch in ein QGLFrameBufferObject rendern kann.
Meine Versuche diesbezüglich schlugen fehl. Der Text wird in das QGLWidget ausgegeben.
Ich versuchte das ungefähr so:
Code: Alles auswählen
void GlWidget::initializeGL()
{
fboObject = new QGLFramebufferObject(fbo_xsize,fbo_ysize,QGLFramebufferObject::Depth);
}
void GlWidget::paintGL()
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1.0, 1.0, -1.0, 1.0, -10.0, 10.0);
// ...usw. der übliche openGL Kram
fboObject->bind();
// ab hier wird ins QGLFrameBufferObject gerendert
// Zeichnen vorbereiten und aktuellen openGL Status sichern
glPushAttrib(GL_ALL_ATTRIB_BITS);
glPushMatrix(); // Modelview Matrix sichern
glViewport(0,0,fbo_xsize,fbo_ysize);
glMatrixMode(GL_PROJECTION);
glPushMatrix(); // Proj. Matrix sichern;
glLoadIdentity();
// Clipping Volume setzen
glOrtho(0,fbo_xsize,0,fbo_ysize,-30,30);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// Dieser Codeblock wird wie gewünscht ins Framebufferobjekt gerendert
int z = 0;
int w = 512;
int h = 512;
glColor4f(0.0f, 0.0f, 1.0f, 0.7f);
glBegin(GL_QUADS);
glVertex3i(0,0,z);
glVertex3i(0,w,z);
glVertex3i(h,w,z);
glVertex3i(h,0,z);
glEnd();
// Jetzt Text rendern -> wird NICHT in die FramebufferObject Texture gerendert
renderText(50,50,50,"Test text");
fboOject->release();
// Jetzt die Texture aus dem FBO in Scene rendern
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D,fbo->texture());
// glBindTexture(GL_TEXTURE_2D,picTexture);
glColor4f(1.0f,1.0f,1.0f,1.0f);
GLfloat z = 0.6;
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-0.5, -0.5, z);
glTexCoord2f(1.0f, 0.0f); glVertex3f(0.5, -0.5, z);
glTexCoord2f(1.0f, 1.0f); glVertex3f(0.5, 0.5, z);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-0.5, 0.5, z);
glEnd();
glDisable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, 0);
}
Die Frage, die sich mir stellt, ist allgemein:
Wie kann ich Text in ein QGLFrameBufferObject rendern?
Gruß,
Peter