#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
错了?
答案 0 :(得分:-2)
opengl中的所有命令仅在刷新或完成调用时才会在帧缓冲区上呈现,因此所有命令仍在队列中,但仍显示在帧缓冲区中。你需要在最后调用glFlush / glFinish,glut提供glutSwapBuffers,所以在你的displayEvent函数结束时你需要调用glutSwapBuffers来查看你的displayEvent函数的效果。