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