gpt4 book ai didi

java - LibGDX FrameBuffer 缩放

转载 作者:搜寻专家 更新时间:2023-10-31 19:29:10 28 4
gpt4 key购买 nike

我正在使用 LibGDX 框架开发一个绘画应用程序,我正在使用他们的 FrameBuffer 类将用户绘制的内容合并到实体纹理上,这就是他们所看到的绘图。这方面工作得很好,但是,用户可以绘制的区域并不总是相同的大小,而且我很难让它在整个窗口以外的分辨率下正确显示。

我已经对此进行了非常广泛的测试,似乎正在发生的事情是 FrameBuffer 正在以与窗口本身相同的分辨率创建纹理,然后简单地拉伸(stretch)或收缩它以适应它应该位于的实际区域,这对于任何大于或小于窗口的绘图都是非常不愉快的效果。

我已经证实,在我的过程的每一步中,我从来没有做过任何这样的拉伸(stretch),并且所有的东西都是按照正确的尺寸和位置以正确的方式和位置绘制的。我也研究了 FrameBuffer 类本身以尝试找到答案,但奇怪的是也没有在其中找到任何东西,但是,考虑到我已经完成的所有测试,它似乎是这个问题唯一可能出现的地方以某种方式创建。

我完全没有想法,花了相当多的时间试图解决这个问题。

最佳答案

非常感谢 Synthetik 找到核心问题。这是解决您逃避的这种情况的正确方法。 (我想!)

无论实际设备窗口大小如何,使帧缓冲区产生正确比例和缩放纹理的方法是将投影矩阵设置为所需的大小,如下所示:

SpriteBatch batch = new SpriteBatch();
Matrix4 matrix = new Matrix4();
matrix.setToOrtho2D(0, 0, 480,800); // here is the actual size you want
batch.setProjectionMatrix(matrix);

关于java - LibGDX FrameBuffer 缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14085212/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com