gpt4 book ai didi

java - 如何在 Java/OpenGL 中使缩放后的图像看起来更好?

转载 作者:太空宇宙 更新时间:2023-11-04 12:29:17 25 4
gpt4 key购买 nike

这是同一图像的两张图片:

这是在预览中查看时的样子...

这就是它在我的游戏中的样子...

enter image description here

显然,角色在我的游戏中被缩小了,但是,当我在预览或 Pixelmator 中缩小 Sprite 时,它仍然很平滑。即使图像的比例为 1:1,它仍然具有锯齿状边缘。

这是我的渲染方法

public void render(Camera camera, List<Entity> entities) {
shader.loadViewMatrix(Main.createViewMatrix(camera));

//per textured model
GL30.glBindVertexArray(((RenderComponent) entities.get(0).getComponent(EntityComponentType.RENDER)).texturedModel.getRawModel().getVaoID());
GL20.glEnableVertexAttribArray(0);
GL20.glEnableVertexAttribArray(1);

for(Entity e : entities) {
RenderComponent render = (RenderComponent) e.getComponent(EntityComponentType.RENDER);

//load transformation matrix per entity
shader.loadTransformationMatrix(Main.createTransformationMatrix(render.position, render.rx, render.ry, render.getScaleX(), render.getScaleY()));
shader.loadSprite((AnimationComponentContainer) e.getComponent(EntityComponentType.ANIMATION));

//activate texture for each entity
GL13.glActiveTexture(GL13.GL_TEXTURE0);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, render.getTexturedModel().getTexture().getTextureID());

//render entity
GL11.glDrawElements(GL11.GL_TRIANGLES, render.getTexturedModel().getRawModel().getVertexCount(), GL11.GL_UNSIGNED_INT, 0);
}

//per textured model
GL20.glDisableVertexAttribArray(0);
GL20.glDisableVertexAttribArray(1);
GL30.glBindVertexArray(0);
}

在我的片段着色器中,我对图像进行采样

vec4 color = texture(sampler, pass_TextureCoords);

并删除透明度

if(color.a < 0.5) discard;
out_Color = vec4(totalDiffuse, 1) * color;

我的问题是,如何防止出现锯齿状边缘(它们在裤子周围最为突出)?或者我该如何平滑它们?图像本身的尺寸为 512x1024

最佳答案

确保游戏的内部渲染分辨率对于整个图像来说足够大,并确保游戏不会将任何光线转换到 Sprite 本身上,因为看起来角色正在与那里的绿光交互,并且会导致裤子上出现一些渐变问题。

关于java - 如何在 Java/OpenGL 中使缩放后的图像看起来更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38020904/

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