[OpenGL]从零开始写一个Android平台下的全景视频播放器——4.2 屏幕朝向,手机姿态的相关概念

本文介绍了在Android平台上使用OpenGL开发全景视频播放器时,如何处理屏幕朝向和手机姿态。讲解了欧拉角、四元数、旋转矢量和旋转矩阵等概念,并探讨了坐标系定义和手性问题。

Github项目地址

为了方便没有准备好梯子的同学,我把项目在优快云上打包下载,不过更新会慢一些

回到目录

先来看一下我们还有什么基本功能没有实现:

  • 使用传感器控制球的朝向
  • 分屏
  • 平移
  • 缩放

之所以需要搞清楚屏幕的朝向,是因为传感器的坐标系、OpenGL坐标系、屏幕坐标系并不是完全统一的

屏幕朝向

手机的屏幕朝向应该是在开发app的时候不得不面对的问题,当然,最简单的方法就是锁定屏幕的朝向。其中,Landscape和Portrait是最常用的两种朝向。
在我们初期的代码实现中,所有坐标系都被调整到适合横屏(Landscape)的模式
简单的获取屏幕朝向,可以像这样:

getWindowManager().getDefaultDisplay().getRotation();

返回的结果和下面的定义进行比较:

  • Surface.ROTATION_0 :竖屏,又称PortraitRotation
  • Surface.ROTATION_90 :左横屏(手机左转90画面不动或画面右转90度),又称LandscapeRotation
  • Surface.ROTATION_180:反向竖屏,又称UpsideDownRotation
  • Surface.ROTATION_270:右横屏,又称SeascapeRotation

什么是竖屏呢?就是这样子:
这里写图片描述

没错,就是传说中的mx2

在ActivityInfo类中,也有表示横屏和竖屏的变量
* SCREEN_ORIENTATION_LANDSCAPE = 0; 横屏
* SCREEN_ORIENTATION_PORTRAIT = 1; 竖屏
我们可以用这种方式来强制指定屏幕的朝向:

setRequestedOrientation(ActivityInfo.SCRE
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值