我可以在 OpenGL 中控制小型化吗?
Can I control minifacation in OpenGL?
假设我有一个 512x512 像素的纹理,我在屏幕上以 256x256 像素显示。
在那种情况下,根据我的 GL_TEXTURE_MIN_FILTER
即 GL_LINEAR
,“从纹理采样时使用的细节级别函数决定纹理应该缩小”。
结果,2x2 像素将缩小为 1 个像素(距离加权线性平均值)。
有什么方法可以控制缩小吗?
假设我希望将 4x4 或 8x8 像素缩小为 1 像素,因为我更喜欢粗糙或光栅化图像 ;-)。
或者有什么方法可以在着色器代码中实现相同的效果?
如果要精确控制过滤,写一个合适的片段着色器,使用texelFetch
函数访问未过滤的纹理数据,然后在着色器中实现过滤器。
如果您要对过滤内核进行泰勒近似,请记住,您可以使用双线性 mipmap 过滤(即 GL_TEXTURE_MIN_FILTER := GL_LINEAR_MIPMAP_LINEAR
)来实现第 0 阶和第 1 阶项泰勒展开.
假设我有一个 512x512 像素的纹理,我在屏幕上以 256x256 像素显示。
在那种情况下,根据我的 GL_TEXTURE_MIN_FILTER
即 GL_LINEAR
,“从纹理采样时使用的细节级别函数决定纹理应该缩小”。
结果,2x2 像素将缩小为 1 个像素(距离加权线性平均值)。
有什么方法可以控制缩小吗?
假设我希望将 4x4 或 8x8 像素缩小为 1 像素,因为我更喜欢粗糙或光栅化图像 ;-)。
或者有什么方法可以在着色器代码中实现相同的效果?
如果要精确控制过滤,写一个合适的片段着色器,使用texelFetch
函数访问未过滤的纹理数据,然后在着色器中实现过滤器。
如果您要对过滤内核进行泰勒近似,请记住,您可以使用双线性 mipmap 过滤(即 GL_TEXTURE_MIN_FILTER := GL_LINEAR_MIPMAP_LINEAR
)来实现第 0 阶和第 1 阶项泰勒展开.