2016-12-16 4 views
0

通常の処理とは逆の処理をしたい、つまりデフォルトのフレームバッファ(画面)を使用し、これをフラグメントシェーダの入力テクスチャとして使用します。それは、されていないOpenGL ES:シェーダの入力テクスチャとして画面を使用する

は私が

glBindFramebuffer(GL_FRAMEBUFFER,0); 
glReadPixels(blah,blah,blah, buf); 
int texID = createTexture(buf); 
glBindTexture(GL_TEXTURE_2D, texID); 
runShaderProgram(); 

行うことができます知っているが、それはGPU(BindTexture)に戻って、その後(ReadPixels)CPUにGPUですでにだとデータをコピーするのか?

私は何とか「直接」画面のコンテンツを使用してシェイダーにフィードできませんでしたか?

答えて

1

APIは一般的なシェーダコードではこの機能を公開していません。

テクスチャにレンダーしたい場合は、「通常の」方法でオフスクリーンFBOにレンダリングするだけの理由がありますか?

+0

ありがとうございました。私が「普通の」方法で使用しないようにする強い理由はありません。私はある種のOpenGLライブラリを書いています。私のAPIは、ユーザが作成したFBOをメソッドの引数として受け入れる場合でも、同じデフォルトのFBOを受け入れることができれば、よりクリーンになります。しかし、これを支払う代価がCPUへの旅行であり、GPU(私のAPIのユーザーにはほとんど隠されているだろう)に戻ってしまうのであれば、私はその画面を除外することを好む。 – Leszek

関連する問題