Index: orxonox/branches/textEngine/src/lib/graphics/font/glfont.cc
===================================================================
--- orxonox/branches/textEngine/src/lib/graphics/font/glfont.cc	(revision 3740)
+++ orxonox/branches/textEngine/src/lib/graphics/font/glfont.cc	(revision 3747)
@@ -112,4 +112,5 @@
   this->fontFile = NULL;
   this->glyphArray = NULL;
+  this->fastTextureID = 0;
 
   this->currentText = new Text;
@@ -120,4 +121,5 @@
   
   this->setSize(fontSize);
+  this->setType(TEXT_DYNAMIC);
   
   this->currentText->renderStyle = TTF_STYLE_NORMAL;
@@ -134,5 +136,5 @@
   this->createTexture();
 
-  this->createFastTexture();
+  this->fastTextureID = this->createFastTexture();
 }
 
@@ -169,4 +171,13 @@
 }
 
+/**
+   \brief sets the Type of this Text
+   \param type the type to set.
+*/
+void GLFont::setType(int type)
+{
+  this->currentText->type = type;
+}
+
 
 /**
@@ -244,4 +255,5 @@
 void GLFont::draw(void)
 {
+  // storing all the Transformation Matrices.
   GLdouble modMat[16];
   GLint viewPort[4];
@@ -251,5 +263,5 @@
   this->enter2DMode();
 
-
+  // setting the Position of this Text.
   Vector pos;
   if (this->currentText->bindNode)
@@ -271,22 +283,35 @@
       pos.z = 0;
     }
-  glBindTexture(GL_TEXTURE_2D, this->currentText->texture);
-  glEnable(GL_TEXTURE_2D);
-  glBegin(GL_QUADS);
-  
-  glTexCoord2f(this->currentText->texCoord.minU, this->currentText->texCoord.minV);
-  glVertex2i(pos.x,   pos.y  );
-
-  glTexCoord2f(this->currentText->texCoord.maxU, this->currentText->texCoord.minV);
-  glVertex2i(pos.x + this->currentText->textPosSize.w, pos.y  );
-
-  glTexCoord2f(this->currentText->texCoord.maxU, this->currentText->texCoord.maxV);
-  glVertex2i(pos.x + this->currentText->textPosSize.w, pos.y + this->currentText->textPosSize.h);
-
-  glTexCoord2f(this->currentText->texCoord.minU, this->currentText->texCoord.maxV);
-  glVertex2i(pos.x, pos.y + this->currentText->textPosSize.h);
-
-  glEnd();
-
+
+  // drawing this Text.
+  if(currentText->type == TEXT_STATIC)
+    {
+      glBindTexture(GL_TEXTURE_2D, this->currentText->texture);
+      glEnable(GL_TEXTURE_2D);
+      glBegin(GL_QUADS);
+      
+      glTexCoord2f(this->currentText->texCoord.minU, this->currentText->texCoord.minV);
+      glVertex2i(pos.x,   pos.y  );
+      
+      glTexCoord2f(this->currentText->texCoord.maxU, this->currentText->texCoord.minV);
+      glVertex2i(pos.x + this->currentText->textPosSize.w, pos.y  );
+      
+      glTexCoord2f(this->currentText->texCoord.maxU, this->currentText->texCoord.maxV);
+      glVertex2i(pos.x + this->currentText->textPosSize.w, pos.y + this->currentText->textPosSize.h);
+      
+      glTexCoord2f(this->currentText->texCoord.minU, this->currentText->texCoord.maxV);
+      glVertex2i(pos.x, pos.y + this->currentText->textPosSize.h);
+      
+      glEnd();
+    }
+  else //(if currentText->type & TEXT_DYNAMIC)
+    {
+      glBindTexture(GL_TEXTURE_2D, this->fastTextureID);
+      //      glEnable(GL_TEXTURE_2D);
+      glTranslatef(pos.x, pos.y, 0);
+
+      printf("%d, %d\n", this->fastTextureID, glyphArray[65]->displayList);
+      glCallList(glyphArray[65]->displayList);
+    }
   this->leave2DMode();
 }
@@ -443,5 +468,5 @@
 
   // setting default values. (maybe not needed afterwards)
-  //  SDL_Color tmpColor;  tmpColor.r = tmpColor.g = tmpColor.b = 0;
+  SDL_Color tmpColor;  tmpColor.r = tmpColor.g = tmpColor.b = 0;
   // Surface definition.
   SDL_Rect tmpRect; // this represents a Rectangle for blitting.
@@ -490,8 +515,8 @@
 	    }
 	  // reading in the new Glyph
-	  glyphSurf = TTF_RenderGlyph_Blended(this->font,
+	  glyphSurf = TTF_RenderGlyph_Shaded(this->font,
 					      i,
-					      this->currentText->color);
-	  //					 tmpColor);
+					      this->currentText->color,
+	  tmpColor);
 	  if( glyphSurf ) 
 	    {
@@ -503,4 +528,5 @@
 	      tmpTexCoord.maxV = (float)(tmpRect.y+tmpGlyph->height)/(float)tmpSurf->w;
 	      tmpGlyph->displayList = glGenLists(1);
+
 	      glNewList(tmpGlyph->displayList, GL_COMPILE);
 	      glBegin(GL_QUADS);
@@ -508,9 +534,9 @@
 	      glVertex2d(0, 0);
 	      glTexCoord2f(tmpTexCoord.minU, tmpTexCoord.maxV);
-	      glVertex2d(0, 1);
+	      glVertex2d(0, tmpRect.y);
 	      glTexCoord2f(tmpTexCoord.maxU, tmpTexCoord.maxV);
-	      glVertex2d(1, 1);
+	      glVertex2d(tmpRect.x, tmpRect.y);
 	      glTexCoord2f(tmpTexCoord.maxU, tmpTexCoord.minV);
-	      glVertex2d(1, 0);
+	      glVertex2d(tmpRect.x, 0);
 	      glEnd();
 	      glEndList();
Index: orxonox/branches/textEngine/src/lib/graphics/font/glfont.h
===================================================================
--- orxonox/branches/textEngine/src/lib/graphics/font/glfont.h	(revision 3740)
+++ orxonox/branches/textEngine/src/lib/graphics/font/glfont.h	(revision 3747)
@@ -26,4 +26,17 @@
 
 #define FONT_HIGHEST_KNOWN_CHAR 128                  //!< The highest character known to the textEngine.
+
+#define TEXT_STATIC             0                    //!< Static Text
+#define TEXT_DYNAMIC            1                    //!< Dynamic Text
+/**
+ * STATIC means: a font, that is only one GL-face.
+ ** it is very fast, and can be used for all text
+ ** that does not have to be changed anymore, or if
+ ** the the text should look very nice
+ * DYNAMIC means: a very fast font, that will is build
+ ** from multiple quads.
+ ** Use this type, if you want to create fast changing
+ ** text like a counter.
+ */
 
 
@@ -78,4 +91,5 @@
   // text
   void setBindNode(PNode* bindNode);
+  void setType(int type);
   void setText(const char* text);
   void setStyle(char* renderStyle);
@@ -95,8 +109,10 @@
   
   Glyph** glyphArray;               //!< An Array of all the Glyphs stored in the Array of Glyphs.
+  GLuint fastTextureID;             //!< The fast textureID.
 
   //! Represents one textElement.
   struct Text
   {
+    int type;                   //!< The type of this Font.
     char* text;                      //!< The text to display
     SDL_Color color;                 //!< The color of the font.
