微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

像 Unity 中的 OpenGL“自由纵横比”

如何解决像 Unity 中的 OpenGL“自由纵横比”

我在 Visual Studio 中使用 OpenGL 和 C++ 制作了自己的简单关卡编辑器,为安卓手机创建游戏。但是我偶然发现了一个问题,即我放入编辑器中的某些对象在 android 上无法正确显示,有时甚至不显示。我一直在四处寻找,找不到解决方案。所以这是我的 lLevel 编辑器的正交相机和屏幕分辨率:

相机对象正交矩阵:

GoldState::aspectRatio = m_AspectRatio = (float)width / (float)height;
    float orthoLeft = 0.0f; //* m_AspectRatio;
    float orthoRight = 100.0f; //* m_AspectRatio;
    float orthoUp = 100.0f;
    float orthodown = 0.0f;
    m_OrthoMatrix = glm::ortho(orthoLeft,orthoRight,orthodown,orthoUp);

Android 也完全一样(使用 ndk)。

纵横比被注释掉了,因为我正在试验,如果不乘以纵横比,整个世界都会被拉伸。

现在unity的自由纵横比,我有一种感觉就像我的正射相机没有乘以纵横比。那究竟是什么,当我选择“自由纵横比”时,我放置在 Unity 上的每个对象如何保持 1:1 并且没有被拉伸或任何东西?如果有人能向我解释这一点,那真的会对我有很大帮助。

还有一件事。我已经使用 opengl 在 android 上制作了几款游戏,但我特别将背景图像制作为精确的宽度和高度,因为我一直在乘以正交矩阵中的纵横比。但这次我只想提取背景和物体的位置和大小,并让它们保持它们的外观,而不会在不同的分辨率下拉伸。

如果有任何其他通用解决方案,如果没有的话我想我应该在关卡编辑器上使用一些固定的分辨率并在android上使用相同的分辨率?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。