gpt4 book ai didi

java - 使用 OpenGL 和 libgdx 在运行时生成非常大的图像

转载 作者:行者123 更新时间:2023-11-29 06:04:13 26 4
gpt4 key购买 nike

我正在生成非常大的六边形网格(在 32 像素宽的六边形中多达 120k 的总六边形会产生超过 12k 宽的图像)并且我正在尝试找到一种有效的方法将这些网格绑定(bind)到 libgdx 中的 OpenGL 纹理。我正在考虑使用多个 FBO,并根据需要将网格分解成多个图 block ,但我不确定如何确保 FBO 之间的连续性。我不能从一个巨大的 FBO 开始,因为它由纹理支持,所以它会因尝试将其加载到视频内存而失败。我不能在堆上使用标准位图,因为我需要 OpenGL 表面的绘图功能。

所以我在想的是,我需要 overdraw FBO,并以某种方式在下一个 FBO 上恰好上一个停止的地方。但是我不确定如何去做。我正在用一系列六边形网格绘制六边形网格,仅供引用。

当然,可能还有其他一些我什至没有想到的更简单、更有效的方法来做到这一点,这就是为什么我向你们好人提出这个问题!

最佳答案

你必须把它分成几 block 来画。您需要能够从任意位置绘制六角网格。这意味着能够根据覆盖在 map 上的矩形计算绘制哪些六边形。这不是一个难题,我不会太担心在屏幕外绘制额外的东西。在继续之前,您应该掌握从任何位置查看六角图的能力。

一旦你掌握了它,它真的很简单。

绘制左上角并存储像素数据。然后将您正在绘制的区域移动到恰好一个图像宽度上。绘制并存储它。将区域移动一个图像宽度。绘制并存储它。继续这样做,直到覆盖整个宽度。

向下移动一个图像高度并重复该过程。一旦你用完了宽度和高度,你就完成了。保存您的超大图片。

为此您不需要 FBO。如果你愿意,你可以把它画到屏幕上。虽然如果你想要最高性能,我建议使用 FBO,对它们进行双缓冲,并通过 pixel buffer object 使用 glReadPixels .这应该会大大减少延迟。

关于java - 使用 OpenGL 和 libgdx 在运行时生成非常大的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9105468/

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