OpenGL学习-1-GLAUX建窗练习工程代码

#include<stdio.h>
#include<windows.h>
#include<glut.h>
#include<glaux.h>

void init(void);
void drawCoordinates(void);
void CALLBACK reshape(GLsizei w,GLsizei h);
void CALLBACK display(void);

void init(void)
{
}

void CALLBACK reshape(GLsizei w,GLsizei h)//回调函数,用于在改变窗口大小时由系统自行调用
//!!注意!!GLsizei为正确类型!而非GLsize
{
	glViewport(100,50,w/4,h/2);//视口函数,指定了视口的左下角(在第一象限内,以(0,0)为原点)位置?
	glMatrixMode(GL_PROJECTION);//指定哪一个矩阵是当前矩阵
	glLoadIdentity();//将当前用户坐标系的原点移到了屏幕中心,类似于一个复位操作
}

void CALLBACK display(void)//回调函数,用于在窗口内显示图像时由系统调用,在窗口大小改变后会被自动调用
{
	glClearColor(0.0f,0.0f,0.0f,0.0f);//清理窗口内容,设置背景颜色。由RGBA数字代表颜色;
	//绘制图形时尽量避免设置透明图形,因为透明效果显示时需要对图像显示层数进行排序
	glClear(GL_COLOR_BUFFER_BIT);//清除缓冲,此参数代表清除颜色缓冲,color改为depth为清除深度缓冲
	drawCoordinates();
	glFlush();//强制刷新缓冲函数,保证图形绘制命令被执行而不是存储在缓冲区
}

void drawCoordinates(void)//绘制坐标轴
{
	glLineWidth(3.0f);//设置绘制线段的宽度

	glColor3f(1.0f,0.0f,0.0f);//设置接下来绘制图形的颜色,此为红色
	glBegin(GL_LINES);//此函数代表某种图形绘制的开始,参数为所要绘制图形的类型;
		glVertex3f(-1.0f,0.0f,0.0f);
		glVertex3f(1.0f,0.0f,0.0f);//代表绘制的线段的两个端点在坐标系中的位置
		
		//!!注意!!坐标系中一个单位长度为视口高/宽的1/2

	glEnd();//此图形绘制结束

	glColor3f(0.0f,1.0f,0.0f);//设置接下来绘制图形的颜色,此为绿色
	glBegin(GL_LINES);//此函数代表某种图形绘制的开始,参数为所要绘制图形的类型;
		glVertex3f(0.0f,0.0f,0.0f);
		glVertex3f(0.0f,1.0f,0.0f);//代表绘制的线段的两个端点在坐标系中的位置
	glEnd();//此图形绘制结束
	
	glColor3f(0.0f,0.0f,1.0f);//设置接下来绘制图形的颜色,此为蓝色
	glBegin(GL_LINES);//此函数代表某种图形绘制的开始,参数为所要绘制图形的类型;
		glVertex3f(0.0f,0.0f,0.0f);
		glVertex3f(0.0f,0.0f,1.0f);//代表绘制的线段的两个端点在坐标系中的位置
	glEnd();//此图形绘制结束
}

void main(void)
{
	auxInitDisplayMode(AUX_SINGLE|AUX_RGBA);//glaux函数:设置显示模式,single代表单缓冲,一般用于静态绘制,RGBA表示红绿蓝透明度色彩模式

	auxInitPosition(0,0,500,500);//glaux函数:设置窗口位置和大小,前两位代表新建窗口时左上角的位置,后两位代表窗口的宽和高
	
	auxInitWindow("MyWindow");//glaux函数:创建窗口,函数参数为窗口的名字
	
	init();
	
	auxReshapeFunc(reshape);//注册回调函数,使之能被系统调用
	auxMainLoop(display);//注册回调函数,使之能被系统调用
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值