/* textgl.c fixed font text, does not move with main image */ #include #include #include #include #define FOV 85 static float v = 15.0; static void printstring(void *font, char *string) { int len, i; len = (int) strlen(string); for (i = 0; i < len; i++) glutBitmapCharacter(font, string[i]); } /* end printstring */ static void printhelp(void) { glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glColor4f(0.0, 0.0, 0.0, 0.5); glRecti(40, 40, 600, 440); glDisable(GL_BLEND); /* yellow, upper center */ glColor3f(1.0, 1.0, 0.0); glRasterPos2i(300, 420); printstring(GLUT_BITMAP_TIMES_ROMAN_24, "Help"); /* aqua, list down center */ glColor3f(0.0, 1.0, 1.0); glRasterPos2i(60, 390); printstring(GLUT_BITMAP_TIMES_ROMAN_24, "h - Togle Help"); glRasterPos2i(60, 360); printstring(GLUT_BITMAP_TIMES_ROMAN_24, "t - Togle Textures"); glRasterPos2i(60, 330); printstring(GLUT_BITMAP_TIMES_ROMAN_24, "f - Togle Fog"); glRasterPos2i(60, 300); printstring(GLUT_BITMAP_TIMES_ROMAN_24, "W, w - Wire frame"); glRasterPos2i(60, 270); printstring(GLUT_BITMAP_TIMES_ROMAN_24, "b - Togle Back face culling"); glRasterPos2i(60, 240); printstring(GLUT_BITMAP_TIMES_ROMAN_24, "Arrow Keys - Rotate"); glRasterPos2i(60, 210); printstring(GLUT_BITMAP_TIMES_ROMAN_24, "F, f - Increase/decrease velocity"); } /* end printhelp */ static void drawscene(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-0.5, 639.5, -0.5, 479.5, -1.0, 1.0); /* just inside 640 by 480 */ glMatrixMode(GL_MODELVIEW); glLoadIdentity(); /* red, top right */ glColor3f(1.0, 0.0, 0.0); glRasterPos2i(350, 470); printstring(GLUT_BITMAP_HELVETICA_10, "This can be a long title, small in upper right"); glRasterPos2i(434, 457); printstring(GLUT_BITMAP_HELVETICA_10, "More, small red print"); printhelp(); } /* end drawscene */ int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitWindowPosition(0, 0); glutInitWindowSize(640, 480); glutCreateWindow(argv[0]); glutDisplayFunc(drawscene); glutMainLoop(); return 0; } /* end main */