gpt4 book ai didi

textures - LibGDX 纹理到 ByteBuffer

转载 作者:行者123 更新时间:2023-12-04 22:05:58 26 4
gpt4 key购买 nike

我正在尝试在 LibGDX 中将纹理转换为像素图,以便我可以将所有像素数据放入 ByteBuffer 进行一些实验,据我所知,我应该能够通过执行以下操作来做到这一点:

Pixmap pixmap = textureName.getTexture().getTextureData().consumePixmap();
ByteBuffer data = pixmap.getPixels();

这似乎确实返回了一个适当大小的像素图,并且 ByteBuffer 似乎确实创建得很好,但它完全用零填充,导致空白的透明图像。这和其他几个测试使我相信 Pixmap 本身只是作为完全透明的图像创建的,但我找不到可能导致这种情况发生的原因。是否有某种限制阻止它工作,或者我只是遗漏了一些明显的东西?

最佳答案

我相信 API ( consumePixmap() ) 是为了让 Texture 类在将 Pixmap 推送到 GPU 时从 Pixmap 中提取数据。
Libgdx Texture 对象表示 GPU 上的纹理数据,因此将底层数据获取到 CPU 通常并非易事(这是渲染 API 的“错误”方向)。见 http://code.google.com/p/libgdx/wiki/GraphicsPixmap

此外,关于 consumePixmap() 的文档说它 requires a prepare() call 在它可以工作之前。

要从纹理中提取像素信息,您需要构建一个 FrameBuffer 对象,将纹理渲染到它,然后提取像素(请参阅 ScreenUtils )。

不清楚您要完成什么,但从另一个方向(字节数组 -> Pixmap -> Texture )然后修改字节数组并重新进行转换可能会奏效。

关于textures - LibGDX 纹理到 ByteBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15053129/

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