OpenGL纹理方块

时间:2015-04-27 17:31:05

标签: opengl textures glsl sampling

我在采样纹理和在纹理边界外采样时遇到了一些问题。我已将纹理设置为GL_CLAMP_TO_EDGE以进行换行,因此当纹理超出边界时,它会夹到边缘:

glBindTexture(GL_TEXTURE_2D, m_color_tex);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

在我的着色器中,我正在尝试实现DoF效果,我遇到的问题是看到很多小方块,所以我开始尝试。我正在使用延迟渲染方法,因此对于这些效果我绘制了一个全屏四边形,在我的着色器文件中是以下内容:

#version 330

uniform sampler2D color_texture;

uniform vec2 Resolution;

out vec4 fragment_colour;

void main(void)
{
    vec2 inverseVP = vec2(1.0 / Resolution.x, 1.0 / Resolution.y);
    vec2 coord = gl_FragCoord.xy * inverseVP;
    vec4 texel_color = texture(color_texture, coord + (vec2(0.0, 0.1)));

    fragment_colour = texel_color;
}

color_texture是我的FBO生成的所有绘图的累积。在着色器中,我只是将像素偏移到纹理大小的10%。但是,当我尝试这个时,我得到以下结果:

在图像中你看到很多小方块,我不知道为什么它们会出现,如果我没有偏移,那么场景就会正常渲染。似乎不在纹理边缘附近的像素会受到影响,但它们不应该受到影响。

有人知道这个问题吗?

0 个答案:

没有答案