我有一个通过 SDL 下的 freeglut 使用 OpenGL 的程序。SDL/OpenGL初始化如下:
// Initialize SDL
SDL_Init(SDL_INIT_VIDEO);
// Create the SDL window
SDL_SetVideoMode(SCREEN_W, SCREEN_H, SCREEN_DEPTH, SDL_OPENGL);
// Initialize OpenGL
glClearColor(BG_COLOR_R, BG_COLOR_G, BG_COLOR_B, 1.f);
glViewport(0, 0, SCREEN_W, SCREEN_H);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0f, SCREEN_W, SCREEN_H, 0.0f, -1.0f, 1.0f);
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
我一直在使用 glBegin() ... glEnd() 块来绘制图元没有任何麻烦。但是,在这个程序中,当我调用任何 glutBitmapX 函数时,程序会简单地退出而没有错误状态。我用来绘制文本的代码是:
glColor3f(1.f, 1.f, 1.f);
glRasterPos2f(x, y);
glutStrokeString(GLUT_BITMAP_8_BY_13, (const unsigned char*)"test string");
在以前的类似程序中,我使用了 glutBitmapCharacter 和 glutStrokeString 来绘制文本,它似乎可以工作。唯一的区别是我现在将 freeglut 与 SDL 一起使用,而不是像以前的程序中那样仅使用 GLUT。我的设置是否存在一些我没有看到的基本问题,或者是否有更好的方法来绘制文本?