我在GLSL中做一个简单的像素化着色器。 除了我在像素化边界看到的边界神器外,一切都按预期工作。
代码是:
precision mediump float;
uniform sampler2D Texture0;
uniform int pixelCount;
varying vec2 fTexCoord;
void main(void)
{
float pixelWidth = 1.0/float(pixelCount);
float x = floor(fTexCoord.x/pixelWidth)*pixelWidth + pixelWidth/2.0;
float y = floor(fTexCoord.y/pixelWidth)*pixelWidth + pixelWidth/2.0;
gl_FragColor = texture2D(Texture0, vec2(x, y));
}
请参阅附图。
我对为什么会发生这种情况一无所知 请帮帮我...
答案 0 :(得分:1)
我认为你的问题与纹理插值有关。
您是否在纹理采样器中使用GL_NEAREST
(这会使纹理采样器使用点采样器而不是某些插值)?
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
此外,您可能不应该使用mipmap。
了解实际纹理图像的外观以及几何体的外观(假设您渲染单个四边形)也很有用。