2012-01-11 183 views
0

如何暫時禁用渲染函數中的ios opengl es 2.x紋理? 我正在實施顏色選擇。禁用opengl es紋理ios

我沒有使用glkit。我使用着色器,所以glDisable(GL_TEXTURE_2D)不起作用,glBindTexture(GL_TEXTURE_2D,0)

回答

3

取決於你想實現什麼。如果你禁用紋理,你期望在你的渲染中有什麼?

如果着色器基於Texture樣本計算片段的顏色,如果不綁定任何紋理,它應該用什麼來代替紋理?一種顏色?

我看到2種選擇:

A - 使用2個着色器,一個支撐紋理,一個使用固定顏色(或頂點顏色如果加載屬性)

乙 - 使用單一着色器和導頻的渲染(紋理或顏色)使用制服。

選項B提供更多的性能。

編輯就如何做到這一點的第一個問題:

if (Texture == 0) { 
    gl_FragColor = vec4(1.0,0.0,0.0,0.0); //red color 
} else{ 
    gl_FragColor = texture2D(Texture, TexCoordOut); 
} 
+0

我如何做B超? 這裏是我的着色器: 'gl_FragColor =的Texture2D(紋理,TexCoordOut);' 和我的渲染功能,我做了以下內容: 'glUniform1i(glGetUniformLocation(programHandle, 「紋理」),0);' – amir 2012-01-11 14:54:02

+0

簡單的解決方案可以是: if(Texture == 0)gl_FragColor = vec4(1.0,0.0,0.0,0.0); //紅色 }其他{gl_FragColor = texture2D(Texture,TexCoordOut); } – 2012-01-11 14:57:20

+0

感謝,偉大的作品 – amir 2012-01-11 15:09:21