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);