Java libgdx-简单重复纹理(setWrap())
所以我得到了一个非常简单的尖峰纹理,我想在屏幕底部重复多次,所以它总是填充整个屏幕大小,无论宽度如何。 当然,我现在已经讨论了setWrap()函数,但是我无法得到我想要的结果 更具体地说,我给出了屏幕的宽度,并计算了纹理的高度,显示为屏幕高度的百分比。 现在,我想将纹理放置在0,0,并重复它,直到它到达屏幕的右侧(当然它可能会被屏幕稍微切断,但这不是问题,我只是不希望纹理拉伸) 到目前为止,我“已经”得到了这个代码Java libgdx-简单重复纹理(setWrap()),java,libgdx,mapping,textures,repeat,Java,Libgdx,Mapping,Textures,Repeat,所以我得到了一个非常简单的尖峰纹理,我想在屏幕底部重复多次,所以它总是填充整个屏幕大小,无论宽度如何。 当然,我现在已经讨论了setWrap()函数,但是我无法得到我想要的结果 更具体地说,我给出了屏幕的宽度,并计算了纹理的高度,显示为屏幕高度的百分比。 现在,我想将纹理放置在0,0,并重复它,直到它到达屏幕的右侧(当然它可能会被屏幕稍微切断,但这不是问题,我只是不希望纹理拉伸) 到目前为止,我“已经”得到了这个代码 Texture spikesTex; spikesTex = new T
Texture spikesTex;
spikesTex = new Texture("spike.png");
spikesTex.setWrap(Texture.TextureWrap.Repeat, Texture.TextureWrap.Repeat);
然后我已经尝试了不同的参数
batch.draw(spikesTex, ...);
但是没有一个真正起作用。我试着用这种方法来完成你的要求。也许对你有帮助
public class MAIN extends ApplicationAdapter {
SpriteBatch batch;
Texture img;
TextureRegion textureRegion;
float drawingWidth,drawingHeight;
@Override
public void create () {
batch = new SpriteBatch();
img = new Texture("spike.png");
img.setWrap(Texture.TextureWrap.Repeat, Texture.TextureWrap.ClampToEdge);
int width=Gdx.graphics.getWidth();
textureRegion=new TextureRegion(img,0,0,width,img.getHeight());
drawingWidth=width;
drawingHeight=Gdx.graphics.getHeight()*.2f;
}
@Override
public void render () {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
batch.draw(textureRegion,0,0,drawingWidth,drawingHeight);
batch.end();
}
@Override
public void dispose () {
batch.dispose();
img.dispose();
}
}
无需创建其他纹理区域,您可以绘制重复纹理本身,并提供所需的宽度和高度参数:
img = new Texture("spike.png");
img.setWrap(Texture.TextureWrap.Repeat, Texture.TextureWrap.Repeat);
...
int imgPosX = 0;// x position where to draw
int imgPosY = 0;// y position where to draw
batch.draw(img, imgPosX, imgPosY, 0, 0, drawingWidth, drawingHeight);
你的解决方案并没有完全达到我想要的效果,因为它的绘制高度比img.getHeight()小。纹理仍然在x轴上拉伸(或者更好:在y轴上收缩)。但当我用相同的因子乘以“宽度”和除以“drawingHeight”时,它就起作用了。谢谢!