Java libgdx-简单重复纹理(setWrap())

Java libgdx-简单重复纹理(setWrap()),java,libgdx,mapping,textures,repeat,Java,Libgdx,Mapping,Textures,Repeat,所以我得到了一个非常简单的尖峰纹理,我想在屏幕底部重复多次,所以它总是填充整个屏幕大小,无论宽度如何。 当然,我现在已经讨论了setWrap()函数,但是我无法得到我想要的结果 更具体地说,我给出了屏幕的宽度,并计算了纹理的高度,显示为屏幕高度的百分比。 现在,我想将纹理放置在0,0,并重复它,直到它到达屏幕的右侧(当然它可能会被屏幕稍微切断,但这不是问题,我只是不希望纹理拉伸) 到目前为止,我“已经”得到了这个代码 Texture spikesTex; spikesTex = new T

所以我得到了一个非常简单的尖峰纹理,我想在屏幕底部重复多次,所以它总是填充整个屏幕大小,无论宽度如何。 当然,我现在已经讨论了setWrap()函数,但是我无法得到我想要的结果

更具体地说,我给出了屏幕的宽度,并计算了纹理的高度,显示为屏幕高度的百分比。 现在,我想将纹理放置在0,0,并重复它,直到它到达屏幕的右侧(当然它可能会被屏幕稍微切断,但这不是问题,我只是不希望纹理拉伸)

到目前为止,我“已经”得到了这个代码

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”时,它就起作用了。谢谢!