为什么opengl不能打印字符串

时间:2015-12-09 02:27:59

标签: string opengl

#include "stdafx.h"
#include <gl/glut.h>
void resizeEvent(int w, int h)
{
    glViewport(0, 0, w, h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(0, w, h, 0);
    glMatrixMode(GL_MODELVIEW);
    glutPostRedisplay();
}

void displayEvent()
{
    glClearColor(1, 1, 1, 0);
    glClear(GL_COLOR_BUFFER_BIT);
    glutSwapBuffers();
    char text[] = "Hello World!";
    glRasterPos2d(110, 110);
    glColor3f(1, 0, 0);
    for(int i=0; text[i] != '\0'; i++)
    {
        glutBitmapCharacter(GLUT_BITMAP_8_BY_13, text[i]);
    }

}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize(400, 300);
    glutInitWindowPosition(0, 0);
    glutCreateWindow("Hello");
    glutDisplayFunc(displayEvent);
    glutReshapeFunc(resizeEvent);
    glutMainLoop();
    return 0;
}

我从ppt学习,并认为它会打印一个字符串。但它不起作用。我从谷歌搜索,但没有答案。我不知道为什么它不能打印字符串。 如果glutBitmapCharacter错了?

1 个答案:

答案 0 :(得分:-2)

opengl中的所有命令仅在刷新或完成调用时才会在帧缓冲区上呈现,因此所有命令仍在队列中,但仍显示在帧缓冲区中。你需要在最后调用glFlush / glFinish,glut提供glutSwapBuffers,所以在你的displayEvent函数结束时你需要调用glutSwapBuffers来查看你的displayEvent函数的效果。