2012-01-11 24 views
0

レンダリング機能でiOS用のopengl es 2.xで一時的にテクスチャを無効にするにはどうすればよいですか? 私は色の選択を実装しています。opengl esテクスチャを無効にする

私はglkitを使用していません。私はシェーダーを使用しているので、glDisable(GL_TEXTURE_2D)は機能しません。glBindTexture(GL_TEXTURE_2D,0)

答えて

3

達成したいものによって異なります。テクスチャを無効にすると、レンダリングには何が期待されますか?

テクスチャサンプルに基づいてフラグメントの色を計算する場合、テクスチャをバインドしないと、テクスチャの代わりに何を使用する必要がありますか?色?

私は2つのオプションを参照してください。

A - (あなたが属性を読み込む場合は頂点色)固定色を使用して

Bを2つのシェーダ、1つの支えるテクスチャ、いずれかを使用 - 単一のシェーダとパイロットを使用しますユニフォームを使ってレンダリング(テクスチャまたはカラー)。

オプション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をどのように行うのですか? '; ' glUniform1i(glGetUniformLocation(programHandle、 "テクスチャ")、0): ' と、私は次のことをやっている私のレンダリング機能では、 ' gl_FragColor =にTexture2D(テクスチャ、TexCoordOut):ここ は私のシェーダです – amir

+0

単純な解は次のようになります。 if(Texture == 0){ gl_FragColor = vec4(1.0,0.0,0.0,0.0); //赤い色 } else { gl_FragColor = texture2D(テクスチャ、TexCoordOut); } –

+0

ありがとう、うまくいく – amir

関連する問題