【发布时间】:2020-09-05 07:26:15
【问题描述】:
我的完整思维算法是什么,可以理解路径上所有可能的宽度/高度变换 PixMap -> (physical) Screen/monitor?
抱歉这个愚蠢的问题,但是这些尺寸如何相互关联/缩放/交互?
我在屏幕上实际看到的尺寸是多少?会发生什么缩放效果?
我需要快速入门,但谷歌搜索并不能提供直接和系统的答案。
PixMap 是图片/图像(来自文件或一些以编程方式绘制的图元),其宽度/高度以像素为单位。
稍后此 PixMap 将显示在某些物理设备的物理屏幕上。据我了解,实际上它只会显示在物理设备屏幕的一部分中-仅在我的游戏的应用程序窗口中(config.width / config.height in LwjglApplicationConfiguration)-我猜它是以像素为单位的......
PixMap 被包装到 Texture 中(我不完全理解为什么 - OpenGL 说 Texture 是一个或多个图像的容器,但新的 Texture(PixMap) 只需要一个 PixMap)。 Texture 没有任何尺寸(好吧,它只是 PixMap(s) 的容器。
现在 Texture 被包裹到 Sprite (new Sprite(Texture)) 中。 Sprite 有自己的宽度/高度。 Sprite 是我游戏的一些可见部分(移动机器人、球、坦克、导弹等)。所以 Sprite 大小会覆盖 PixMap 大小,因此会以某种方式导致缩放?
但是我在屏幕上实际看到的 Sprite 大小是什么(如果我从未调用过 sprite.scale())? sprite.setSize(float, float) - 表示高度/宽度(以像素为单位)??? Sprite 能否自动将大小设置为与底层 PixMap 完全相同?
现在Camera 大小 - 相机是用户在屏幕上实际看到的(游戏世界的一部分,可能比屏幕大),对吧?所以我可以将相机大小设置为等于 Gdx 应用程序窗口(启动器类中的 config.width / config.height)?还是相机尺寸定义了物理屏幕的可见(显示给用户)部分?如果我的游戏适合整个屏幕,我可以将相机尺寸设置为等于屏幕尺寸,仅此而已。为什么我需要相机?我想我无法完全理解相机。
还有ViewPort - 它与Camera“相同”(它管理Camera)。但是我看到 ExtendViewPort 和 ScalingViewPort “篡改”了缩放,所以他们调整了我的 Sprite/PixMap/Camera 大小?
此外,所有ViewPort 类的构造函数中都有minHeight/minWidth - 另一个大小转换/缩放?
附:另一个问题是所有这些情况下的坐标。什么相对于什么?
此answer 也部分相关且有帮助。
【问题讨论】:
标签: java camera libgdx sprite pixmap