[英]How do I make scaled images look better in Java/OpenGL?
這是同一圖像的兩張圖片:
這是在預覽中查看時的樣子...
這就是它在我的游戲中的樣子......
顯然,在我的游戲中縮小角色,但是,當我在預覽或像素中縮小精靈時,它仍然是平滑的。 即使圖像比例為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
確保游戲的內部渲染分辨率對於完整圖像來說足夠大,並確保游戲沒有將任何光線投射到精靈本身上,因為它看起來像角色正在與那里的那個綠燈相互作用而且它是在褲子上造成一些漸變問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.