我正在 Libgdx 中开发 3D (2.5D) 应用程序。
我发现贴花对于此目的非常有用。
在我的应用程序中应该有包含动态文本的图层,现在我想知道通过贴花绘制文本的最佳方法是什么。
目前我的实现是基于将 BitmapFont 绘制到 FBO,然后在 DecalBatch.flush() 之前获取 FBO 纹理并将其绑定到 Decal。
我认为这可能不是最有效的方法,但找不到更好的方法。
我的应用程序可以包含放置在 3D 世界中的大量文本“图层”,因此也许将每个 BitmapFont 绘制到 FBO,并将 FBO 纹理绑定到 Decal 并不是最好的方法。
你们有更好的主意吗?
做到这一点最有效的方法是什么?
提前Tnx!
您可以通过适当分配投影矩阵,使用 SpriteBatch 直接绘制到 3D 空间中。
首先,有一个 Matrix4 来确定每个文本字符串的位置和旋转。您需要它的原因是 SpriteBatch 和 BitmapFont 没有 Z 偏移参数。
由于您可以将所有翻译放入 Matrix4 中,因此当您调用draw
方法,只需绘制到0,0。
然后,您可以使用每个网格的 Matrix4 与相机的组合矩阵相乘,然后将其提交到 SpriteBatch。因此,您需要一个单独的 Matrix4 来进行计算。
textTransform.idt().scl(0.2f).rotate(0, 0, 1, 45).translate(-50, 2, 25f);
//Probably need to scale it down. Scale before moving or rotating.
spriteBatch.setProjectionMatrix(tmpMat4.set(camera.combined).mul(textTransform));
spriteBatch.begin();
font.draw(spriteBatch, "Testing 1 2 3", 0, 0);
spriteBatch.end();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)