OpenGL学习- Triangle

本博客纯属个人学习记录笔记,请勿做评论,如果有错,可以指出,非常感谢.

 

OpenGL 数据类型

GLenum:  用于GL枚举的无符号 整型

GLboolean: 布尔类型

GLbitfield  将多个布尔值(最多 32个)打包到单个使用位操作变量的 四位字节整形

GLbyte 有符号字节整型

GLshort  有符号双字节整形

GLint  有符号四个字节整型

GLsizei 有符号四字节整型

GLubyte 无符号单字节整型

GLushort 无符号双字节整型

GLuint 无符号四字节整型

GLfloat 四字节浮点数

GLclampf 四字节精度浮点数

GLvoid void表示没有返回值或者参数

GLfixed 定点数,使用整型进行存储

GLclampx 另一种定点数

 

本节用到的OpenGL的函数

void glutInit(int argc,char ** args);

void glutInitDisplayMode(unsigned int mode);//设置初始显示模式

glutInitWindowSize//设置窗口大小

glutInitWindowPosition//设置窗口位置

glutCreateWindow//创建一个窗口

glClearColor//用指定的颜色清除窗口颜色

glClear

glBegin

glShadeMode

glColor3f

glVertex2f

glEnd

glFlush

glViewport

glMatrixMode

glLoadIdentity

gluOrtho2D

glutReshapeFunc

glutDisplayFunc

glutMainLoop

 

绘画出一个三角形

void BackGround(){
	//用制定的颜色来清除当前窗口颜色
	//rgba 0  0 0 0 代表为黑色,透明 
	glClearColor(0.0,0.0,0.0,0.0);
}

void myDisplay(){
	//清除缓存使用写操作的颜色缓存
	glClear(GL_COLOR_BUFFER_BIT);
	//开始绘制图形 
	/**
     GL_POINTS,
	 GL_LINES, 
	 GL_LINE_STRIP, 
	 GL_LINE_LOOP, 
	 GL_TRIANGLES, 
	 GL_TRIANGLE_STRIP, 
	 GL_TRIANGLE_FAN, 
	 GL_QUADS, 
	 GL_QUAD_STRIP, 
	 GL_POLYGON

   **/
	glBegin(GL_TRIANGLES);
	//在使用光滑着色时(即GL_SMOOTH),
	//独立的处理图元中各个顶点的颜色。
	//对于线段图元,线段上各点的颜色将根据两个顶点的颜色通过插值得到。
	//对于多边形图元,多边形内部区域的颜色将根据所有顶点的颜色插值得到。
	glShadeModel(GL_SMOOTH);
	
	//paint the first point
	glColor3f(1.0,0.0,0.0);
	glVertex2f(-1.0,-1.0);

	glColor3f(0.0,1.0,0.0);
	glVertex2f(0.0,-1.0);

	glColor3f(0.0,0.0,1.0);
	glVertex2f(-0.5,1.0);

	//
	glEnd();
    //用于强制刷新缓冲,保证绘图命令将被执行,
	//而不是存储在缓冲区[2]中等待其他的OpenGL命令
	glFlush();
}

void myReshape(GLsizei w,GLsizei h){

	/**计算机图形学中,在屏幕上打开窗口的任务是由窗口系统,而不是图1  图1
	OpenGL负责的。
	在默认情况下,视口被设置为占据打开窗口的整个像素矩形,
	窗口大小和设置视口大小相同,所以为了选择一个更小的绘图区域,
	就可以用glViewport函数来实现这一变换,
	在窗口中定义一个像素矩形,
	最终将图像映射到这个矩形中,**/
	//这里设置opengl 绘制的区域为w,h,就整个打开窗口的大小
	glViewport(0,0,w,h);
	
	//指定哪一个矩阵是当前矩阵,

	//GL_PROJECTION  表示对模型视景矩阵堆栈应用随后的矩阵操作
	glMatrixMode(GL_PROJECTION);
	//重置当前指定的矩阵为单位矩阵
	glLoadIdentity();
	
	//正投影
	if(w<=h){
		//正投影
		gluOrtho2D(-1.0,1.5,-1.5,1.5*(GLfloat)h/(GLfloat)w);
	}else{
		gluOrtho2D(-1.0,1.5*(GLfloat)w/(GLfloat)h,-1.5,1.5);
	}
}




int main(int argc,char ** argv){
	glutInit(&argc,argv);
	glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
	glutInitWindowSize(400,400);
	glutInitWindowPosition(200,200);
	glutCreateWindow("Triangle");
	BackGround();
	//窗口形状发生变化的回调函数 。
	glutReshapeFunc(myReshape);
	//glutDisplayFunc函数用于注册一个绘图函数, 这样操作系统在必要时刻就会对窗体进行重新绘制操作
	glutDisplayFunc(myDisplay);
	glutMainLoop();
	return 0;
}


 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值