Ios 从FBO渲染到纹理会导致模糊

Ios 从FBO渲染到纹理会导致模糊,ios,opengl-es,opengl-es-2.0,framebuffer,texture2d,Ios,Opengl Es,Opengl Es 2.0,Framebuffer,Texture2d,我正在尝试在iOS上使用OpenGL ES2创建一个照片编辑程序。我希望能够使用片段着色器修改照片的某些部分。例如,如果用户触摸屏幕,该点将被发送到片段着色器。片段着色器将在点的特定半径内添加效果 我需要的是将片段着色器中所做的修改持久化到下一帧。我读过这样做的方法是设置与纹理关联的第二个帧缓冲区对象。以下是该程序的功能: 当前纹理是否为0?如果是这样,这是第一次绘制,因此我们将照片绘制到FBO(即,纹理投影到2D矩形上)。然后在屏幕上重新绘制矩形,但这次使用FBO作为纹理源。之后,我们将FBO

我正在尝试在iOS上使用OpenGL ES2创建一个照片编辑程序。我希望能够使用片段着色器修改照片的某些部分。例如,如果用户触摸屏幕,该点将被发送到片段着色器。片段着色器将在点的特定半径内添加效果

我需要的是将片段着色器中所做的修改持久化到下一帧。我读过这样做的方法是设置与纹理关联的第二个帧缓冲区对象。以下是该程序的功能:

当前纹理是否为0?如果是这样,这是第一次绘制,因此我们将照片绘制到FBO(即,纹理投影到2D矩形上)。然后在屏幕上重新绘制矩形,但这次使用FBO作为纹理源。之后,我们将FBO的纹理绘制回FBO

i、 e

这种工作,但由于绘制方法多次调用,图像变得模糊。我想这可能是因为你无法将纹理渲染到它自己的FBO中,所以我尝试了两个FBO,但也没有成功。我是OpenGL的新手,所以任何建议都将不胜感激

以下是指向完整来源的链接:


事实证明,问题出在片段着色器中。以前,纹理坐标表示为lowp vec2。当我把它改为highp vec2时,问题就消失了

if(_currentTextureID == 0) 
    _currentTextureID = _imageTexture
else 
    _currentTextureID = _frameBufferTextureID;

glBindFrameBuffer(GL_FRAMEBUFFER, _frameBufferID)
[self drawTexture: _currentTextureID];

[self bindDrawable]   
[self drawTexture: _currentTextureID];