2016-05-21 15 views
0

texture2Dを返す前にシェーダの読み込まれたsampler2Dテクスチャから左側を切り取ろうとしています。シェーダでsampler2Dをクリップする

現在、シェーダに渡す前にテクスチャの編集を行っていますが、パフォーマンスが低下しているフレームが複数回表示されています。代わりにシェーダでテクスチャの編集を行うことはできますか?

私は最初のテクスチャを渡している:

gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, canvas); 

をそしてシェーダで均一としてそれを使用して... 私はフラグメントシェーダやバーテックスシェーダでそれをクリップしますか?

+0

私が正しくあなたの質問を理解していれば、あなただけの使用テクスチャ座標を調整することで、使用したいテクスチャの一部をサンプリングすることはできませんサンプリングのために? –

答えて

1

clip the textureとはどういう意味ですか?あなたはテクスチャをクリップしません。テクスチャからデータを読み込み、そのデータで何をしたいかを決めます。例

// don't draw anything if the texture coords reference the right half 
// of the texture. 
if (someTexCoords.x > 0.5) { 
    discard; 
} 
gl_FragCoord = texture2D(someSampler, someTexCoords); 

それとも

// Draw red if texture coords access the right half of the texture 
vec4 texColor = texture2D(someSampler, someTexCoords); 
gl_FragCoord = mix(texColor, vec4(1,0,0,1), step(0.5, someTexCoords.x)); 

など。

+0

ありがとうございました!これは、私が座標に基づいて破棄することによって必要とされたことを正確に達成しました。私はそれを理解しようとしている間、私の頭をキーボードに対して叩いていました! – bushdiver

関連する問題