【opengl】【step by step】一————三角形

今天学如何用opengl绘制一个三角形,先直接贴代码:

#include <GL/glut.h>  

void renderScene()
{
	// 清除颜色缓存
	glClear(GL_COLOR_BUFFER_BIT);

	const GLfloat vertices[3][2]={
		{0.0,0.0},
		{50.0,0.0},
		{25.0,50.0}
	};

	// 设置顶点颜色
	glColor3f(1.0,0.0,0.0);
	glBegin(GL_TRIANGLES);
	glVertex2fv(vertices[0]);
	glVertex2fv(vertices[1]);

	glVertex2fv(vertices[2]);
	glEnd();

	glFlush();
}

void myInit()
{
	// 设置清屏颜色为白色
	glClearColor(1.0,1.0,1.0,1.0);

	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluOrtho2D(0.0,50,0.0,50);
	glMatrixMode(GL_MODELVIEW);
}

//主程序入口  
int main(int argc, char* argv[])  
{  
	// 初始化窗口和opengl之间的交互
	glutInit(&argc,argv);  

	// 初始化显示模式,使用RGB颜色,使用单缓存
	glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);

	// 初始化窗口大小
	glutInitWindowSize(500,500);

	// 初始化窗口位置
	glutInitWindowPosition(200,200);

	// 创建窗口
	glutCreateWindow("draw triangle");

	<pre class="cpp" name="code">         // 绑定显示回调函数
	glutDisplayFunc(renderScene);


myInit();glutMainLoop();return 0; }
 

 

现在开始分析代码

首先我们要绘图,肯定要创建窗口,

         // 初始化窗口和opengl之间的交互
	glutInit(&argc,argv);  

	// 初始化显示模式,使用RGB颜色,使用单缓存
	glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);

	// 初始化窗口大小
	glutInitWindowSize(500,500);

	// 初始化窗口位置
	glutInitWindowPosition(200,200);

	// 创建窗口
	glutCreateWindow("draw triangle");

这四句代码就是做这件事。

就准备开始绘制,但是绘制的之前还要设置一些参数,比如窗口的背景颜色,裁剪体的位置大小等。

          // 设置清屏颜色为白色
	glClearColor(1.0,1.0,1.0,1.0);

	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluOrtho2D(0.0,50,0.0,50);
	glMatrixMode(GL_MODELVIEW);

上面五句,首先将颜色缓存的值全部设置成白色,由此来达到设置背景颜色为白色。为之后的清除操作作准备

         // 清除颜色缓存
	glClear(GL_COLOR_BUFFER_BIT);

 

然后接下来三句是为了设置裁剪体,glLoadIdentity()将栈顶矩阵置为单位矩阵,使设置裁剪体的时候不受之间的影响。

最后面一句将矩阵模式置回模视图矩阵。

之后opengl就会循环调用绑定好的显示回调函数:

         // 绑定显示回调函数
	glutDisplayFunc(renderScene);




 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值