2014-02-17 84 views
0

我正嘗試在iOS上使用OpenGL ES2創建照片編輯程序。我希望能夠使用片段着色器修改照片的某些部分。例如,如果用戶觸摸該點將被髮送到片段着色器的屏幕。片段着色器將在該點的某個半徑內添加一個效果。從FBO渲染紋理會導致模糊

我需要的是將片段着色器中所做的修改保存到下一幀。我讀過這樣做的方法是設置與紋理關聯的第二個幀緩衝區對象。以下是該程序的功能:

當前紋理0?如果是這樣,這是第一次繪製,所以我們將照片繪製到我們的FBO上(即將紋理投影到二維矩形上)。然後將矩形重新繪製到屏幕上,但是這次使用FBO作爲紋理源。之後,我們將FBO的紋理繪製回FBO。

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

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

[self bindDrawable] 
[self drawTexture: _currentTextureID]; 

這方面的工作,但作爲驅動方法被調用多次的圖像變得模糊。我認爲這可能是因爲你無法將紋理渲染到它自己的FBO中,所以我嘗試了兩個FBO,但這也不起作用。我相當新的OpenGL,所以任何建議將不勝感激!

下面是完整的源代碼的鏈接:

Source Code

This is an example of the blurring

回答

0

由於原來的問題是在片段着色器。之前,紋理座標被表示爲lowp vec2。當我將它改爲highp vec2時,問題消失了。