diff --git a/src/modules/graphics/opengl/Font.cpp b/src/modules/graphics/opengl/Font.cpp index 3b5b9aa60..b0441a7d8 100644 --- a/src/modules/graphics/opengl/Font.cpp +++ b/src/modules/graphics/opengl/Font.cpp @@ -38,8 +38,9 @@ namespace opengl for(unsigned int i = 0; i < MAX_CHARS; i++) { glyphs[i] = new Glyph(data->getGlyphData(i)); - glNewList(list + i, GL_COMPILE); glyphs[i]->load(); + glNewList(list + i, GL_COMPILE); + glyphs[i]->draw(0, 0, 0, 1, 1, 0, 0); glEndList(); widths[i] = data->getGlyphData(i)->getWidth(); spacing[i] = data->getGlyphData(i)->getAdvance(); diff --git a/src/modules/graphics/opengl/Glyph.cpp b/src/modules/graphics/opengl/Glyph.cpp index 0e61f5aee..06f431456 100644 --- a/src/modules/graphics/opengl/Glyph.cpp +++ b/src/modules/graphics/opengl/Glyph.cpp @@ -55,6 +55,31 @@ namespace opengl data->release(); unload(); } + + void Glyph::draw(float x, float y, float angle, float sx, float sy, float ox, float oy) const + { + static Matrix t; + + t.setTransformation(x, y, angle, sx, sy, ox, oy); + + if(texture != 0) + glBindTexture(GL_TEXTURE_2D,texture); + + glPushMatrix(); + + glMultMatrixf((const GLfloat*)t.getElements()); + + glEnableClientState(GL_VERTEX_ARRAY); + glEnableClientState(GL_TEXTURE_COORD_ARRAY); + glVertexPointer(2, GL_FLOAT, sizeof(vertex), (GLvoid*)&vertices[0].x); + glTexCoordPointer(2, GL_FLOAT, sizeof(vertex), (GLvoid*)&vertices[0].s); + glDrawArrays(GL_QUADS, 0, 4); + glDisableClientState(GL_TEXTURE_COORD_ARRAY); + glDisableClientState(GL_VERTEX_ARRAY); + + glPopMatrix(); + + } bool Glyph::load() { @@ -87,15 +112,7 @@ namespace opengl 0, format, GL_UNSIGNED_BYTE, - data->getData()); - - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_TEXTURE_COORD_ARRAY); - glVertexPointer(2, GL_FLOAT, sizeof(vertex), (GLvoid*)&vertices[0].x); - glTexCoordPointer(2, GL_FLOAT, sizeof(vertex), (GLvoid*)&vertices[0].s); - glDrawArrays(GL_QUADS, 0, 4); - glDisableClientState(GL_TEXTURE_COORD_ARRAY); - glDisableClientState(GL_VERTEX_ARRAY); + data->getData()); return true; } diff --git a/src/modules/graphics/opengl/Glyph.h b/src/modules/graphics/opengl/Glyph.h index 43e3c42f5..d6c2578c0 100644 --- a/src/modules/graphics/opengl/Glyph.h +++ b/src/modules/graphics/opengl/Glyph.h @@ -40,7 +40,7 @@ namespace graphics namespace opengl { - class Glyph : public Volatile + class Glyph : public Drawable, public Volatile { private: @@ -68,6 +68,8 @@ namespace opengl float getWidth() const; float getHeight() const; + void draw(float x, float y, float angle, float sx, float sy, float ox, float oy) const; + }; // Glyph } // opengl