gpt4 book ai didi

opengl - 为什么OpenGL调整大小的图像看起来像素化?

转载 作者:行者123 更新时间:2023-12-03 11:37:19 24 4
gpt4 key购买 nike

我想在2个正方形上显示2个纹理。这是它的样子。
enter image description here
左侧325x325(与图片大小相同),右侧(100x100)
图像尺寸为325x325。如何使右侧的纹理更清晰。
获得高质量的唯一方法是当我使用相同大小的纹理和对象时。
我正在使用PNG图片和以下GL方法。

gl::TexParameteri(gl::TEXTURE_2D, gl::TEXTURE_MAG_FILTER, gl::LINEAR as i32);
gl::TexParameteri(gl::TEXTURE_2D, gl::TEXTURE_MIN_FILTER, gl::LINEAR as i32);
我的顶点
#version 430 core
layout(location = 0) in vec2 position;
layout(location = 1) in vec2 texCoord;
layout(location = 2) in float layer;
out vec2 uv;
out float layer_get;
uniform mat4 MVP;

void main()
{
gl_Position = MVP * vec4(position.x, position.y, 0.0, 1.0);
uv = texCoord;
layer_get = layer;
}
我的片段
#version 430 core
out vec4 color;

in vec2 uv;
in float layer_get;

layout (binding=0) uniform sampler2DArray textureArray;

void main()
{
color = texture(textureArray, vec3(uv.x,uv.y, 0));
}
先感谢您

最佳答案

如评论和链接的问题中所述,您可以通过trilinear filtering并生成Mipmaps来提高质量。
使用“mipmap”纹理最小化函数gl::NEAREST_MIPMAP_NEARESTgl::LINEAR_MIPMAP_NEARESTgl::NEAREST_MIPMAP_LINEARgl::LINEAR_MIPMAP_LINEAR之一:

gl::TexParameteri(gl::TEXTURE_2D, gl::TEXTURE_MIN_FILTER, gl::LINEAR_MIPMAP_LINEAR as i32);
在指定二维纹理图像之后(在 gl::GenerateMipmap之后),通过 gl::TexImage2D 生成mip贴图:
gl::GenerateMipmap(gl::TEXTURE_2D)

关于opengl - 为什么OpenGL调整大小的图像看起来像素化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62503332/

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