2013-07-10 176 views
0

我有一个简单的GLSL纹理渲染:GLSL渲染不透明像素,不interpolation.or抗锯齿

顶点着色器:

varying vec2 UV; 
void main() { 
    UV = gl_MultiTexCoord0.xy; 
    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; 
} 

片段着色器:

varying vec2 UV; 
uniform sampler2D diffuseMap; 

void main(void) { 
    gl_FragColor = texture2D(diffuseMap, UV); 
} 

而且我有质感发纯色。我需要渲染这个纹理时没有任何插值或抗锯齿(这似乎发生在纯色的边缘)。对我来说,最好只取最近的像素,而不是尝试插入。

我不确定我是否清楚。想象一下这样:我想用棋形纹理一个球,我希望结果是纯黑色和白色。但是黑色和白色相遇时,渲染会产生一点灰色。

回答

1

将GL_TEXTURE_MIN_FILTER和GL_TEXTURE_MAX_FILTER设置为GL_NEAREST,并确保您没有mipmap。

+0

你是怎么做的?你的意思是在片段着色器中添加GL_TEXTURE_MIN_FILTER = GL_NEAREST和GL_TEXTURE_MAX_FILTER = GL_NEAREST? – Lucian

+0

@Lucian你不用在着色器中做这个,但是当用glTexParameteri设置纹理单元时 – Vasaka