Java 如何获取图像(.png)的一部分并将其作为纹理存储在libGDX中

Java 如何获取图像(.png)的一部分并将其作为纹理存储在libGDX中,java,graphics,libgdx,Java,Graphics,Libgdx,所以这个标题几乎说明了一切 我正在从事一个libGDX项目,该项目要求我获取不同图像的一部分(例如:从2000x2000图像中获取100x100块),并将其存储为libGDX纹理 最终目标是获取此纹理并用其填充多边形 我知道我可以手动格式化这些图像,但这不好。新图像将一直使用。每一部分都有很多部分 我一直在查看libgdxapi,但什么也没找到。要么我找错了地方,要么我找错了东西。只要朝正确的方向轻推一下,我会很高兴的 谢谢您可以使用拆分(…)方法 TetureRegion reg = new

所以这个标题几乎说明了一切

我正在从事一个libGDX项目,该项目要求我获取不同图像的一部分(例如:从2000x2000图像中获取100x100块),并将其存储为libGDX纹理

最终目标是获取此纹理并用其填充多边形

我知道我可以手动格式化这些图像,但这不好。新图像将一直使用。每一部分都有很多部分

我一直在查看libgdxapi,但什么也没找到。要么我找错了地方,要么我找错了东西。只要朝正确的方向轻推一下,我会很高兴的

谢谢

您可以使用
拆分(…)
方法

TetureRegion reg = new TextureRegion(new Texture("pathToYourImage"));
TextureRegion[][] subRegions = reg.split(100, 100); 
这将从该纹理区域创建瓷砖,从左上角开始到右下角结束

UPD: 如果区域大小不同或未放置在栅格中。使用
drawPixmap(..)
方法

int sectionWidth = ...
int sectionHeight = ...
int sectionSrcX = ...  
int sectionSrcY = ... 

Pixmap allTexture = new Pixmap(Gdx.files.internal("path"));

Pixmap section = new Pixmap(sectionWidth, sectionHeight, Pixmap.Format.RGBA8888);

section.drawTexture(0, 0, sectionSrcX, sectionSrcY, sectionWidth, sectionHeight);

Texture cutTexture = new Texture(section);

正如icarumbas所说,您可以使用TextureRegion。TextureRegion将保存对存储该区域的纹理的引用,以及纹理中图像的宽度、高度、x位置和y位置。无需将图像分割为单独的纹理,因为TextureRegion旨在存储纹理区域,而无需创建更多纹理

例如:

Texture wholeImage = new Texture("imagePath");
TextureRegion firstRegion = new TextureRegion(wholeImage,0,0,50,50); // gets the region from the 0,0 point of the whole image and is 50 x 50px
TextureRegion secondRegion = new TextureRegion(wholeImage,0,50,50,50); // gets the region from the 0,50 point of the whole image and is 50 x 50px
TextureRegion topRegion = new TextureRegion(wholeImage,50,0,100,50); // gets the region from the 50,0 point of the whole image and is 100 x 50px
然后,可以使用与使用spritebatch绘制普通纹理相同的方式绘制这些纹理

batch.begin();
batch.draw(firstRegion, 30,30);
batch.draw(secondRegion , 130,30);
batch.draw(topRegion , 130,130);
batch.end();

使用TextureRegions时的一个常见问题是人们使用getTexture()方法。此方法用于获取整个纹理,而不是定义的区域。

我没有指定,但每个部分的大小不同,来自图像上的不同位置,哇,我不知道。