OpenGL入门-视图

      

      OpenGL以前只是读了一下源码库,没有深入学习,后来搞一个项目,用到了DX9.0,对于图形学有点入门吧,现在开始好好学一下OpenGL了。


      

void display(void)
{
	glClear(GL_COLOR_BUFFER_BIT);
	glColor3f(1.0,0.0,1.0);//绘制图形所用的颜色设置
	glLoadIdentity();//设置单位矩阵

	//相机的默认位置和方向
	/*
	void APIENTRY gluLookAt (
    GLdouble eyex,    
    GLdouble eyey, 
    GLdouble eyez,   相机位置
    GLdouble centerx, 
    GLdouble centery, 
    GLdouble centerz, 镜头瞄准位置
    GLdouble upx, 
    GLdouble upy, 
    GLdouble upz);   相机方向向量
	*/
	gluLookAt(0.0,0.0,3.0,0.0,0.0,0.0,0.0,1.0,0.0);
	//WINGDIAPI void APIENTRY glTranslatef (GLfloat x, GLfloat y, GLfloat z);  模型变化
	//glTranslatef(0.0,0.0,-5.0);

	glScalef(1.0,2.0,1.0);//x,y,z轴缩放系数
	glutWireCube(1.0);//绘制立方体
	glFlush();//强制刷新缓冲,保证绘图命令将被执行,而不是存储在缓冲区中等待其他的OpenGL命令

}

void reshape(int w,int h)
{
	glViewport(0,0,(GLsizei)w,(GLsizei)h);//设置视口被设置为占据打开窗口的整个像素矩形
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();

	//WINGDIAPI void APIENTRY glFrustum (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
	//将当前矩阵与一个透视矩阵相乘,把当前矩阵转变成透视矩阵
	//left,right指明相对于垂直平面的左右坐标位置
    //bottom,top指明相对于水平剪切面的下上位置
    //nearVal,farVal指明相对于深度剪切面的远近的距离,两个必须为正数
	//glFrustum(-1.0,1.0,-1.0,1.0,1.5,20.0);
	/*
	void APIENTRY gluPerspective (
    GLdouble fovy, 
    GLdouble aspect, 
    GLdouble zNear, 
    GLdouble zFar);
	指定了观察的视景体(frustum为锥台的意思,通常译为视景体)在世界坐标系中的具体大小,一般而言,其中的参数aspect应该与窗口的宽高比大小相同。
	*/
	gluPerspective(60.0,1.0,1.5,20.0);

	//WINGDIAPI void APIENTRY glOrtho (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
	//正交平行的视景体
	//glOrtho(-1.0,1.0,-1.0,1.0,0,10.0);
	glMatrixMode(GL_MODELVIEW);
}
//模型变化
//移动物体
glTranslatef(1.0,1.0,1.0);
//按照局部坐标系旋转物体
glRotatef(45.0,1.0,1.0,1.0);
//缩放物体
glScalef(1.0,1.0,1.0);


你可能感兴趣的:(OpenGL入门-视图)