gpt4 book ai didi

java - Libgdx 纹理映射

转载 作者:行者123 更新时间:2023-11-29 03:56:17 27 4
gpt4 key购买 nike

我有一个 100x100 的简单平面 Mesh。按照 libgdx 教程,我已经成功地在网格上映射了一个纹理。然而,它从一开始就看起来很奇怪,当我缩小时甚至更奇怪。我的目标是一个简单的网格图案。

这是放大的飞机:

Zoomed in

现在缩小:

Zoomed out

纹理本身是一个 64x64 的小正方形,带有轮廓。

我的 Grid 类如下所示(Grid 扩展了 gdx.graphics.Mesh):

private final int HALFWIDTH = 50, HALFLENGTH = 50;
private Texture texture;

public Grid() {

super( true, 4, 4,
new VertexAttribute(Usage.Position, 3, "a_position"),
new VertexAttribute(Usage.ColorPacked, 4, "a_color"),
new VertexAttribute(Usage.TextureCoordinates, 2, "a_texCoords")
);

setVertices(new float[] {
-HALFWIDTH, -HALFLENGTH, -2f, Color.toFloatBits(255, 0, 0, 255), -HALFWIDTH, HALFLENGTH,
HALFWIDTH, -HALFLENGTH, -2f, Color.toFloatBits(0, 255, 0, 255), HALFWIDTH, -HALFLENGTH,
-HALFWIDTH, HALFLENGTH, -2f, Color.toFloatBits(0, 0, 255, 255), -HALFWIDTH, HALFLENGTH,
HALFWIDTH, HALFLENGTH, -2f, Color.toFloatBits(0, 255, 255, 0), HALFWIDTH, HALFLENGTH
});
setIndices(new short[] { 0, 1, 2, 3 });

this.texture = new Texture( Gdx.files.internal("assets/grid.png") );
this.texture.setWrap( TextureWrap.Repeat, TextureWrap.Repeat );
this.texture.setFilter( TextureFilter.Linear, TextureFilter.Linear );
}

void draw() {

Gdx.graphics.getGL10().glEnable(GL10.GL_TEXTURE_2D);
this.texture.bind();
render(GL10.GL_TRIANGLE_STRIP, 0, 4);
}

最佳答案

我不是 100% 确定,但我强烈怀疑这是因为您在纹理上使用了线性插值。当您放大和缩小纹理时,OpenGL 必须选择如何在不同的分辨率下显示纹理。众所周知,使用线性插值会导致屏幕截图显示的效果(有时称为 Zagging)。这是由于您使用的纹理中的细线(高信息密度)所致。

尝试更改纹理模式以使用 Mip Maps .

this.texture.setFilter(TextureFilter.MipMap, TextureFilter.MipMap);

这将预先计算纹理的缩放版本并避免锯齿效果。让我知道这是否有效。

关于java - Libgdx 纹理映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6233679/

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