Part I 空气曲棍球 Chapter5 调整屏幕比例(Adjusting to the Screen’s Aspect Ratio)

    你也许你还没注意到,但是我们现在的应用有一个屏幕比例问题。你可以运行上一章中的应用然后旋转屏幕,在竖屏模式下如图1所示,横屏模式如图2所示:

图 1 (横屏模式)
图 2 (竖屏模式)


   

桌面在横屏模式下产生了挤压,原因是我们直接把坐标传递给了OpenGL,而没了考虑屏幕比例。每一个2D和3D应用都有一个共同问题,那就是如何决定在屏幕上显示什么及如何根据屏幕尺寸进行显示,这个问题也有一个常用的解决办法,在OpenGL中我们可以使用投影把现实世界映射到屏幕上,还可以适配不同的屏幕尺寸及方向让屏幕显示出正常的比例。因为现在使用的手机都是使用不同种屏幕尺寸和比例,因此适配这种情况就显得非常重要。
    在这一章我们将学习为什么桌面会被挤压以及使用投影映射修正这个问题,下面是这一章的主要内容:
    1)首先复习一些线性代数基础、学习如何把矩阵与向量相乘。
    2)然后学习如何定义和使用矩阵进行投影映射,这样的话屏幕在进行显示的时候不管是横屏还是竖屏都不会产生形变。
    这里会在上一章的基础上进行学习,因此首先把上章工程的代码复制一份,并命名为AirHockeyOrtho。

    下面是这一章的内容划分:


5.1 屏幕比例问题(We Have an Aspect Ratio Problem)

 

5.2 虚拟坐标系(Working with a Virtual Coordinate Space)

 

5.3 线性代数基础(Linear Algebra 101)

 

5.4 定义正侧投影(Defining an Orthographic Projection)

 

5.5 增加正侧投影(Adding an Orthographic Projection)

 

5.6 小节(A Review)

    我们首先学习了一些线性代数的基础并且理解了当用一个矩阵与向量相乘时将会得到什么结果。然后学习了如何定义正交投影矩阵来重新定义坐标空间,同时使用这个矩阵修正了横竖屏切换产生的问题。

5.7 练习(Exercises)

   试着调整正交投影矩阵改变桌面的大小(tips:改变传递给orthoM()的参数left、right、top、bottom)
    下一章,我们将会进入三维世界。

    最后附上源代码工程(点击下载
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值