《图形编程技术学习》(十三)OpenGLStarter程序问题解答

一,关于OpenGLStarter程序的几个问题

1.理解freeglut进行opengl编程的基本模式,体会消息驱动和回调函数;

2.函数display(),myReshape()都是什么时候调用的?

3.程序中是如何实现键盘控制物体旋转平移的?

4.glutIdleFunc()有什么用?

5.display()函数中为什么需要调用:

              glTranslatef(0.0,0.0,-G_fDistance);

6.从中找找图形流水线

7.理解gluPerspective(60.0,1.0*(GLfloat) w/(GLfloat)h,1.0,30.0);

8.理解glViewport(0,0,w,h);

二,解答部分

5.display()函数中为什么需要调用:

              glTranslatef(0.0,0.0,-G_fDistance);

OpenGL的默认坐标系和默认视点位置

拓展:

右手坐标系

     右手坐标系在我们以前初中高中学几何的时候也经常用到。在三维坐标系中, Z轴的正轴方向是根据右手定责确定的。右手定则也决定三维空还能中任一坐标轴的正旋转方向。要标注X、Y和Z轴的正轴方向,就将右手背对着屏幕放置,拇指即指向X轴的正方向。伸出食值和中指,如下图所示,食指指向Y轴的正方向,中指所指向的方向即是Z轴的正方向。要确定轴的正旋转方向,如下图所示,用右手的大拇指指向轴的正方形,弯曲手指。那么手指所指向的方向即是轴的正旋转方向。

左手坐标系

  伸出左手,让拇指和食指成“L”形,大拇指向右,食指向上。其余的手指指向前方。这样就建立了一个左手坐标系。拇指、食指和其余手指分别代表x,y,z轴的正方向。判断方法:在空间直角坐标系中,让左手拇指指向x轴的正方向,食指指向y轴的正方向,如果中指能指向z轴的正方向,则称这个坐标系为左手直角坐标系.反之则是右手直角坐标系。

左手坐标系和右手坐标系比较

  手坐标系和右手坐标系,左手坐标系是X轴向右,Y轴向上,Z轴向前,右手坐标系的Z轴正好相反,是指向“自己”的,在计算机中通常使用的是左手坐标系,而数学中则通常使用右手坐标系。计算机里面其实很多也有用右手坐标系,这个只是根据实际应用不同,没有说哪个比较好。

 

6.从程序中找找图形流水线 CPU GPU

体会:OpenGL是一个状态机

整个绘制操作会按照固定的流程进行,如同一条流水线。OpenGL函数只是用来设置这条流水线的一些状态参数u,二并不是用来真正执行绘制操作的。

glRotatef( )函数的官方说明:

glRotatef (angle, x, y, z)

The glRotatef function computes a matrix that performs a counterclockwise rotation of angle degrees about the vector from the origin through the point (x, y, z).

-----来自MSDN

翻译:

glRotatef 函数计算了一个矩阵,该矩阵形成了一个对应角度从原始向量通过点(X,Y,Z)旋转的对应角度。

关键概念小结

.h, .lib, .dll各是用来干什么的?

编译与链接的概念;编译错误、链接错误、运行时错误

OpenGL的跨平台性体现在什么方面?

回调函数、消息映射

对OpenGLStarter程序流程的理解

参考链接:https://www.cnblogs.com/mythou/p/3327046.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值