使用 openGL ES 管理不同的结果手机
我正在学习 openGL ES 2.0 来制作 Android 游戏。
我想知道不同的结果屏幕会如何影响我的程序?
我制作了一个旋转三角形的示例程序,并注意到当我向侧面转动设备时,三角形会变小,并且与边缘的距离不同。
这是如何工作的以及我应该如何制作一款在不同设备上都能正常运行的游戏?
I am learning openGL ES 2.0 to make a game for android.
I was wondering how different resulution screens would affect my program?
I have made a sample program of a spinning triangle and noticed that when I turn my device sideways the triangle gets smaller and is at a different distance form the the edges.
How does this work and how am I supposed to make a game which works nicely on different devices?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
每个轴的屏幕坐标从
-1.0f
到1.0f
,原点 (0|0) 位于屏幕中心。的三角形
考虑到A(-1|-1)、B(+1|-1)、C(0|+1)
在纵向方向上正确显示,在横向方向上将被水平拉伸和垂直压缩。这是因为定位是相对于屏幕的:
A(左下)、B(右下)、C(上中)。
所以,缩放是不成比例的。在进行比例缩放时,您必须使用屏幕的纵横比并在顶点着色器中适当地变换顶点。
The screen's coordinates go from
-1.0f
to1.0f
for each axis with the origin (0|0) in the center of the screen.Considering a triangle with
A(-1|-1), B(+1|-1), C(0|+1)
which is displayed correctly in portrait orientation, will be stretched horizontally and compressed vertically in landscape orientation. That is because the positioning is relative to the screen:
A(bottom left), B(bottom right), C(top center).
So, the scaling is unproportional. When doing proportional scaling, you have to work with the aspect ratio of the screen and transform the vertices appropriate in a vertex shader.