在白底hello窗口中显示 hello world!
#include<gl/GLUT.H>
void displayEvent()
{
// 设置清屏颜色
glClearColor(1, 1, 1, 0);
// 用指定颜色清除帧缓存
glClear(GL_COLOR_BUFFER_BIT);
int i;
char text[] = "Hello World!";
glRasterPos2d(50, 100);
glColor3f(1, 0, 0);
for (int i = 0; text[i] != '\0'; ++i) {
glutBitmapCharacter(GLUT_BITMAP_8_BY_13, text[i]);
}
// 交换双缓存
glutSwapBuffers();//注意这句话的位置
}
void resizeEvent(int w, int h)
{
// 设置视口大小
glViewport(0, 0, w, h);
// 切换矩阵模式为投影矩阵
glMatrixMode(GL_PROJECTION);
// 载入单位矩阵
glLoadIdentity();
// 进行二维平行投影
gluOrtho2D(0, w, h, 0);
// 切换矩阵模式为模型矩阵
glMatrixMode(GL_MODELVIEW);
// 发送重绘
glutPostRedisplay();
}
int main(int argc, char *argv[])
{
// 初始化glut
glutInit(&argc, argv);
// 设置OpenGL显示模式(双缓存, RGB颜色模式, 深度缓存)
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
// 设置窗口初始尺寸
glutInitWindowSize(400, 300);
// 设置窗口初始位置
glutInitWindowPosition(100, 100);
// 设置窗口标题
glutCreateWindow("Hello");
// 设置显示回调函数
glutDisplayFunc(displayEvent);
// 设置窗口尺寸变化回调函数
glutReshapeFunc(resizeEvent);
// 进入glut事件循环
glutMainLoop();
return 0;
}
"hello world"出现在鼠标点击的位置
增加了鼠标事件函数和全局变量gx,gy来定位
#include<gl/GLUT.H>
int gx = 50;
int gy = 100;
void displayEvent()
{
// 设置清屏颜色
glClearColor(1, 1, 1, 0);
// 用指定颜色清除帧缓存
glClear(GL_COLOR_BUFFER_BIT);
int i;
char text[] = "Hello World!";
glRasterPos2d(gx, gy);
glColor3f(1, 0, 0);
for (int i = 0; text[i] != '\0'; ++i) {
glutBitmapCharacter(GLUT_BITMAP_8_BY_13, text[i]);
}
// 交换双缓存
glutSwapBuffers();
}
// 鼠标事件函数
void mouseEvent(int button, int state, int x, int y)
{
if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
{
gx = x;
gy = y;
glutPostRedisplay();
}
}
void resizeEvent(int w, int h)
{
// 设置视口大小
glViewport(0, 0, w, h);
// 切换矩阵模式为投影矩阵
glMatrixMode(GL_PROJECTION);
// 载入单位矩阵
glLoadIdentity();
// 进行二维平行投影
gluOrtho2D(0, w, h, 0);
// 切换矩阵模式为模型矩阵
glMatrixMode(GL_MODELVIEW);
// 发送重绘
glutPostRedisplay();
}
int main(int argc, char *argv[])
{
// 初始化glut
glutInit(&argc, argv);
// 设置OpenGL显示模式(双缓存, RGB颜色模式, 深度缓存)
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
// 设置窗口初始尺寸
glutInitWindowSize(400, 300);
// 设置窗口初始位置
glutInitWindowPosition(100, 100);
// 设置窗口标题
glutCreateWindow("Hello");
// 设置显示回调函数
glutDisplayFunc(displayEvent);
// 设置窗口尺寸变化回调函数
glutReshapeFunc(resizeEvent);
// 设置鼠标事件回调函数
glutMouseFunc(mouseEvent);
// 进入glut事件循环
glutMainLoop();
return 0;
}