121 lines
No EOL
4.1 KiB
C++
121 lines
No EOL
4.1 KiB
C++
#include <GL/gl.h>
|
|
#include <GL/glu.h>
|
|
#include <GL/glut.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
GLubyte space[] =
|
|
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
|
GLubyte letters[][13] = {
|
|
{0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xff, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x18},
|
|
{0x00, 0x00, 0xfe, 0xc7, 0xc3, 0xc3, 0xc7, 0xfe, 0xc7, 0xc3, 0xc3, 0xc7, 0xfe},
|
|
{0x00, 0x00, 0x7e, 0xe7, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe7, 0x7e},
|
|
{0x00, 0x00, 0xfc, 0xce, 0xc7, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc7, 0xce, 0xfc},
|
|
{0x00, 0x00, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0xc0, 0xc0, 0xc0, 0xc0, 0xff},
|
|
{0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0xc0, 0xc0, 0xc0, 0xff},
|
|
{0x00, 0x00, 0x7e, 0xe7, 0xc3, 0xc3, 0xcf, 0xc0, 0xc0, 0xc0, 0xc0, 0xe7, 0x7e},
|
|
{0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xff, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3},
|
|
{0x00, 0x00, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e},
|
|
{0x00, 0x00, 0x7c, 0xee, 0xc6, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06},
|
|
{0x00, 0x00, 0xc3, 0xc6, 0xcc, 0xd8, 0xf0, 0xe0, 0xf0, 0xd8, 0xcc, 0xc6, 0xc3},
|
|
{0x00, 0x00, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0},
|
|
{0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xdb, 0xff, 0xff, 0xe7, 0xc3},
|
|
{0x00, 0x00, 0xc7, 0xc7, 0xcf, 0xcf, 0xdf, 0xdb, 0xfb, 0xf3, 0xf3, 0xe3, 0xe3},
|
|
{0x00, 0x00, 0x7e, 0xe7, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xe7, 0x7e},
|
|
{0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0xc7, 0xc3, 0xc3, 0xc7, 0xfe},
|
|
{0x00, 0x00, 0x3f, 0x6e, 0xdf, 0xdb, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x66, 0x3c},
|
|
{0x00, 0x00, 0xc3, 0xc6, 0xcc, 0xd8, 0xf0, 0xfe, 0xc7, 0xc3, 0xc3, 0xc7, 0xfe},
|
|
{0x00, 0x00, 0x7e, 0xe7, 0x03, 0x03, 0x07, 0x7e, 0xe0, 0xc0, 0xc0, 0xe7, 0x7e},
|
|
{0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff},
|
|
{0x00, 0x00, 0x7e, 0xe7, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3},
|
|
{0x00, 0x00, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3},
|
|
{0x00, 0x00, 0xc3, 0xe7, 0xff, 0xff, 0xdb, 0xdb, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3},
|
|
{0x00, 0x00, 0xc3, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0xc3},
|
|
{0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0xc3},
|
|
{0x00, 0x00, 0xff, 0xc0, 0xc0, 0x60, 0x30, 0x7e, 0x0c, 0x06, 0x03, 0x03, 0xff}};
|
|
|
|
GLuint fontOffset;
|
|
|
|
void makeRasterFont(void)
|
|
{
|
|
GLuint i, j;
|
|
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
|
|
|
fontOffset = glGenLists(128);
|
|
for (i = 0,j = 'A'; i < 26; i++,j++) {
|
|
glNewList(fontOffset + j, GL_COMPILE);
|
|
glBitmap(8, 13, 0.0, 2.0, 10.0, 0.0, letters[i]);
|
|
glEndList();
|
|
}
|
|
glNewList(fontOffset + ' ', GL_COMPILE);
|
|
glBitmap(8, 13, 0.0, 2.0, 10.0, 0.0, space);
|
|
glEndList();
|
|
}
|
|
|
|
void init(void)
|
|
{
|
|
glShadeModel(GL_FLAT);
|
|
makeRasterFont();
|
|
}
|
|
|
|
void printString(char *s)
|
|
{
|
|
glPushAttrib(GL_LIST_BIT);
|
|
glListBase(fontOffset);
|
|
glCallLists(strlen(s), GL_UNSIGNED_BYTE, (GLubyte *)s);
|
|
glPopAttrib();
|
|
}
|
|
|
|
/* Everything above this line could be in a library
|
|
* that defines a font. To make it work, you've got
|
|
* to call makeRasterFont() before you start making
|
|
* calls to printString().
|
|
*/
|
|
void display(void)
|
|
{
|
|
GLfloat white[3] = {1.0, 1.0, 1.0};
|
|
const char* p1="KIE KIE";
|
|
const char* p2="DIRI RIIR";
|
|
|
|
glClear(GL_COLOR_BUFFER_BIT);
|
|
glColor3fv(white);
|
|
|
|
glRasterPos2i(20, 60);
|
|
printString((char*)p1);
|
|
glRasterPos2i(20, 40);
|
|
printString((char*)p2);
|
|
glFlush();
|
|
}
|
|
|
|
void reshape(int w, int h)
|
|
{
|
|
glViewport(0, 0, (GLsizei)w, (GLsizei)h);
|
|
glMatrixMode(GL_PROJECTION);
|
|
glLoadIdentity();
|
|
glOrtho(0.0, w, 0.0, h, -1.0, 1.0);
|
|
glMatrixMode(GL_MODELVIEW);
|
|
}
|
|
|
|
void keyboard(unsigned char key, int x, int y)
|
|
{
|
|
switch (key)
|
|
{
|
|
case 27:
|
|
exit(0);
|
|
}
|
|
}
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
glutInit(&argc, argv);
|
|
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
|
|
glutInitWindowSize(300, 100);
|
|
glutInitWindowPosition(100, 100);
|
|
glutCreateWindow(argv[0]);
|
|
init();
|
|
glutReshapeFunc(reshape);
|
|
glutKeyboardFunc(keyboard);
|
|
glutDisplayFunc(display);
|
|
glutMainLoop();
|
|
return 0;
|
|
} |