解说OpenGL 坐标系统

2015年03月24日 10:22 0 点赞 0 评论 更新于 2025-11-21 18:21

OpenGL 坐标系概述

Cocos2d-x 基于 OpenGL 和 OpenGL ES 构建,因此支持 OpenGL 坐标系。在 OpenGL 坐标系中,原点位于屏幕左下角,x 轴正方向向右,y 轴正方向向上。

不同坐标系统详解

屏幕坐标系

屏幕坐标系采用了与 OpenGL 坐标系不同的坐标系统。其原点位于屏幕左上角,x 轴正方向向右,y 轴正方向向下。触摸屏事件传入的位置信息采用的就是屏幕坐标系。在 Cocos2d-x 中,在对触摸事件做出响应之前,需要先将触摸点的坐标从屏幕坐标系转换到 OpenGL 坐标系。可以使用 CCDirectorconvertToGL 方法来完成这一转换,后续在触屏信息相关内容中会对此进行详细介绍。

世界坐标系

世界坐标系,也被称为绝对坐标系,是游戏开发中引入的重要概念。这里的“世界”指的是游戏世界,世界坐标系为描述其他坐标系提供了必要的参考标准。我们可以利用世界坐标系来描述其他坐标系的位置。在 Cocos2d-x 中,世界坐标系是一个较为宏观的概念,它为整个游戏场景的构建和元素定位提供了统一的基准。

本地坐标系

本地坐标系是与特定节点相关联的坐标系。每个节点都拥有独立的本地坐标系。当节点发生移动或改变方向时,与该节点关联的坐标系(包括它的子节点的坐标系)也会随之移动或改变方向。这种变化是相对的,是以该节点为基准的,并且只有在节点的坐标系环境中才有实际意义。

Node 类的位置设置使用的是其父节点的节点坐标系,该坐标系与 OpenGL 坐标系的方向一致,原点位于父节点的左下角。如果父节点是场景树中的顶层节点,那么它所使用的节点坐标系就与世界坐标系重合了。

Cocos2d-x 中坐标的映射关系

Cocos2d-x 中的元素呈现出父子关系的层级结构。在通过 Node 设置元素位置时,使用的是相对于其父节点的本地坐标系,而非世界坐标系。在进行屏幕绘制时,Cocos2d-x 会将这些元素的本地节点坐标映射为世界坐标系坐标。需要注意的是,世界坐标系和 OpenGL 坐标系的方向是一致的。

作者信息

menghao

menghao

共发布了 3994 篇文章