Ios 从FBO渲染到纹理会导致模糊
我正在尝试在iOS上使用OpenGL ES2创建一个照片编辑程序。我希望能够使用片段着色器修改照片的某些部分。例如,如果用户触摸屏幕,该点将被发送到片段着色器。片段着色器将在点的特定半径内添加效果 我需要的是将片段着色器中所做的修改持久化到下一帧。我读过这样做的方法是设置与纹理关联的第二个帧缓冲区对象。以下是该程序的功能: 当前纹理是否为0?如果是这样,这是第一次绘制,因此我们将照片绘制到FBO(即,纹理投影到2D矩形上)。然后在屏幕上重新绘制矩形,但这次使用FBO作为纹理源。之后,我们将FBO的纹理绘制回FBO i、 e 这种工作,但由于绘制方法多次调用,图像变得模糊。我想这可能是因为你无法将纹理渲染到它自己的FBO中,所以我尝试了两个FBO,但也没有成功。我是OpenGL的新手,所以任何建议都将不胜感激 以下是指向完整来源的链接: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
事实证明,问题出在片段着色器中。以前,纹理坐标表示为lowp vec2。当我把它改为highp vec2时,问题就消失了
if(_currentTextureID == 0)
_currentTextureID = _imageTexture
else
_currentTextureID = _frameBufferTextureID;
glBindFrameBuffer(GL_FRAMEBUFFER, _frameBufferID)
[self drawTexture: _currentTextureID];
[self bindDrawable]
[self drawTexture: _currentTextureID];