OpenGl-1 颜色函数实例

效果:

 

// OpenGLColorExample.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<GL/glut.h>
#include<iostream>
using namespace std;
void init(){
	//glClearColor(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)
	//设置背景颜色,只起到set作用不起Clear作用,alpha是透明度
	glClearColor(0.0f,0.0f,0.0f,0.0);
	glShadeModel(GL_SMOOTH);//两点之间的颜色插值,均匀插值
}
void triangle(){

	glBegin(GL_TRIANGLES);
	glColor3f(1.0f,0.0f,0.0f);glVertex2f(5.0f,5.0f);
	glColor3f(0.0f,1.0f,0.0f);glVertex2f(25.0f,5.0f);
	glColor3f(0.0f,0.0f,1.0f);glVertex2f(5.0f,25.0f);
	glEnd();

	glBegin(GL_TRIANGLES);
	glColor3f(1.0f,1.0f,0.0f);glVertex2f(26.0f,25.0f);
	glColor3f(0.0f,1.0f,1.0f);glVertex2f(26.0f,5.0f);
	glColor3f(1.0f,0.0f,1.0f);glVertex2f(6.0f,25.0f);
	glEnd();
}
void display(){
	//glClear ( ) 将缓存清除为预先的设置值
	glClear(GL_COLOR_BUFFER_BIT);
	triangle();
	glFlush();
	//用于强制刷新缓冲,保证绘图命令将被执行,而不是存储在缓冲区 [2]  中等待其他的OpenGL命令。
}

//reshape主要负责重置坐标系统和投影矩阵
void reshape(int w,int h){
	//—以像素为单位,指定了视口的左下角(在第一象限内,以(0,0)为原点的)位置。
	//width,height————表示这个视口矩形的宽度和高度,根据窗口的实时变化重绘窗口。
	glViewport(0,0,(GLsizei)w,(GLsizei)h);
	
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	if(w<=h){
		gluOrtho2D(0.0,30.0,0.0,30.0*(GLfloat)h/(GLfloat)w);
		//gluOrtho2D(left,right,bottom,top)
		//gluOrtho2D定义剪裁面,通过正交投影,
		//把景物(模型)按照1:1的比例绘制到一个剪裁面上,
		//相当于对世界坐标窗口的一个截取。
	}else{
		gluOrtho2D(0.0,30.0*(GLfloat)h/(GLfloat)w,0.0,30.0);
	}
	glMatrixMode(GL_MODELVIEW);
}
int _tmain(int argc, char** argv)
{
	glutInit(&argc,argv);
	glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE);
	glutInitWindowSize(500,500);

	glutInitWindowPosition(100,100);

	glutCreateWindow("opengl颜色函数实例");
	init();
	glutDisplayFunc(display);
	glutReshapeFunc(reshape);
	
	glutMainLoop();
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值