第一个openGL程序

 在白底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;
}

第一个openGL程序

 

"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;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值