0

How can I draw text in a glut window with the keyboard;
I have tried doing cin with

void TextBox::Keys(unsigned char key,int x,int y){
   switch(key){
      case 13://enter key
      cin >> String;
       DrawString = true;
      break;    
      case 27:
        exit(0);        
      break;                    
   }

and then in the draw function

fontx = tx + 3;
          fonty = ty + (th+8)/2;
         if(DrawString == true){
         glColor3f(0.0,0.0,0.0);               
         Font(GLUT_BITMAP_HELVETICA_12,(char*)String,fontx,fonty);
}

the intention here was to get the string from cin and put it in the string variable and then draw it to the screen. I know how to get
input with cin and put it in a variable with a console program, but i don't know how to do it with the glut keyboard. I also know how to draw text to the screen with glut. I have other questions but I will post them in seperate threads. Much thanks, Jody Bush

2
Contributors
1
Reply
2
Views
8 Years
Discussion Span
Last Post by firstPerson
0

You could use glutBitmapCharacter

Combined with function you can make this :

void renderBitmapString(
		float x, 
		float y, 
		float z, 
		void *font, 
		char *string) {  
  char *c;
  glRasterPos3f(x, y,z);
  for (c=string; *c != '\0'; c++) {
    glutBitmapCharacter(font, *c);
  }
}

That is provided by lighthouse, Their link

Now all you need is a little bit of logic.

For example :

string input = "";

void keyBoard(unsigned char key, int x, int y){ 
    input += key;
   void updateString();
}

and :

void updateString(){
   glutBimapString(0,0,0, GLUT_BITMAP_9_BY_15, input.c_str());
}

You can then call this function also in you draw function.

void drawFunc()
{
    glClear(someBITSGoesHerE);
    glLoadIdentity();
    updateString();
 //blah blah
}
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.