LibGDX

LibGDX图形模块开篇

2017-09-10  本文已影响11人  天神Deity

此页面需要重写。

介绍

图形模块提供有关当前设备显示和应用程序窗口的信息,以及有关当前OpenGL上下文的信息和访问。 具体来说,可以在该类中找到关于屏幕尺寸,像素密度和帧缓冲器属性(诸如颜色深度,深度/模板缓冲器和抗锯齿功能)的信息。 与其他常用模块一样,通过Gdx class.的静态字段提供访问。

OpenGL上下文
此模块的特定用途 涉及通过较底层的命令更直接地访问当前的OpenGL上下文。
以下示例访问OpenGL ES2应用程序中的上下文以设置视口并清除帧和深度缓冲区:

Gdx.gl20.glViewport( 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight() );
Gdx.gl20.glClearColor( 0, 0, 0, 1 );
Gdx.gl20.glClear( GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT );

请注意,使用getWidth()/ getHeight()来访问当前应用程序窗口维度,并将其设置为GL20类中视口的常量值,就像在常规OpenGL程序中一样。 Libgdx的一个关键优势是能够访问底层的功能,因为高级抽象并不足够。

每个版本的OpenGL ES都可以通过其各自的接口以及GLCommon接口调用新增的命令。 请注意,使用GL20需要指示应用程序在启动时使用OpenGL ES2(因为默认不启用)。

帧时间

Graphics类中一个特别有用的方法是getDeltaTime(),它提供自上一个渲染帧以来经过的时间。 这对于基于时间的动画可能是有用的。 例如舞台实例中的Actor或UI动画可能由应用程序的渲染方法中的以下代码控制:

stage.act( Math.min( Gdx.graphics.getDeltaTime(), 1/30 ) );

尽管getDeltaTime()可以用于简单动画,但它仍然是依赖于帧的,并且诸如游戏逻辑或物理模拟的更敏感的动作可能有其他更好的的时序策略。
另一个有用的方法是getFramesPerSecond(),它返回当前帧速率的运行平均值,用于简单的诊断目的。 但是对于更严重的分析工作,建议使用FPSLogger。

平台差异性

在桌面上,Graphics类还提供了设置窗口图标和标题值的功能,方法setDisplayMode()和setVSync()将显示模式设置为全屏/窗口,并分别启用/禁用垂直显示同步。 显然这些方法对缺少图标或标题的平台没有影响。请记住,这些方法仅在某些平台上有效果。

上一篇下一篇

猜你喜欢

热点阅读