opengl - 为什么 OpenGL 调整大小的图像看起来像素化?
问题描述
左侧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));
}
先感谢您
解决方案
如评论和链接问题中所述,您可以通过三线性过滤和生成Mipmaps来提高质量。
使用“mipmap”纹理缩小函数之一gl::NEAREST_MIPMAP_NEAREST
,gl::LINEAR_MIPMAP_NEAREST
或:gl::NEAREST_MIPMAP_LINEAR
gl::LINEAR_MIPMAP_LINEAR
gl::TexParameteri(gl::TEXTURE_2D, gl::TEXTURE_MIN_FILTER, gl::LINEAR_MIPMAP_LINEAR as i32);
gl::GenerateMipmap
通过指定二维纹理图像后(后)生成mip图gl::TexImage2D
:
gl::GenerateMipmap(gl::TEXTURE_2D)
推荐阅读
- jquery - 使用jquery隐藏首页上的导航栏
- asp.net - Get IP v4 of client client machine asp.net
- python - form bug when switching frames
- java - How to packing and prepare EJB module using multiple jar files?
- python - 通过格式字符串用 pandas 读取 dat 文件
- node.js - Selenium-WebDriver UnhandeledPromiseRejectionWarning 错误
- python - 将日期序列分配给 pandas groupby 组
- reactjs - 无法在反应中加载背景图像
- ios - 等待线程Objective C中的值更改
- java - 切点中的 AspectJ 形式化未绑定