話glGenTextures

https://learnopengl.com/Advanced-OpenGL/Framebuffers

テクスチャの添付ファイルは、
フレームバッファにテクスチャを取り付けるときに、すべての描画命令は、テクスチャに書き込みます
、それは通常の色/深度またはステンシルバッファであるかのように。

テクスチャを使用することの利点は、すべてのレンダリング操作の結果が格納されるということである
テクスチャ画像として
、我々はその後、私たちのシェーダで使用することができます。

テクスチャオブジェクトを作成します - 「バインドテクスチャオブジェクトを - 」メモリ空間を割り当てる - 「フォーマットピクチャー - 」オブジェクトフレームにバインド

unsigned int texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 800, 600, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);  
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0); 

ここでの主な違いは、我々は寸法が画面サイズ(这并不是必须的)に等しく設定することで
、我々はテクスチャのデータパラメータとしてNULLを渡します。
このテクスチャのために、我々は唯一のメモリを割り当て、実際にそれを充填されていません。
テクスチャを充填して、すぐに私たちはフレームバッファにレンダリングして起こります。

また、我々は、ラッピング方法のいずれか、またはミップマッピングを気にしないことに注意して
、我々はほとんどの場合、それらを必要とされないため。

补充:
uが小さいまたは大きいサイズのテクスチャにあなたの画面全体をレンダリングしたい場合
uはあなたのテクスチャの新しい寸法で(あなたのフレームバッファにレンダリングする前に)再びglViewportを呼び出す必要があり、
そうでない場合にのみ小さなテクスチャの一部またはスクリーンテクスチャに描画されます。

glFrameBufferTexture2Dには、以下のパラメータがあります。

  1. ターゲット:我々は(描画読み取りまたは両方)をターゲットとしているフレームバッファのタイプ。
  2. 添付ファイル:私たちが添付しようとしている添付ファイルの種類。今、私たちは色の添付ファイルを添付しています。末尾の0は、我々は以上の1色の添付ファイルを添付することができます示唆していることに注意してください。私たちは、後のチュートリアルのものに取得します。
  3. textarget:あなたが添付したいテクスチャの種類。
  4. テクスチャ:実際のテクスチャを添付する。
  5. レベル:ミップマップレベル。私たちは、0でこれを維持します。

脇色の添付ファイルから我々はまた、フレームバッファオブジェクトに深度とステンシルテクスチャを添付することができます。
奥行きの添付ファイルを添付するために、我々はGL_DEPTH_ATTACHMENTとして添付ファイルの種類を指定します。
テクスチャの形式とinternalformatタイプはその後、デプスバッファの保存形式を反映するためにGL_DEPTH_COMPONENTになるように注意してください。
あなたは2番目の引数としてGL_STENCIL_ATTACHMENTを使用してGL_STENCIL_INDEXとしてテクスチャのフォーマットを指定するバッファステンシルを接続します。

単一のテクスチャとしてデプスバッファとステンシルバッファの両方を取り付けることも可能です。テクスチャの各32ビット値は、奥行き情報の24ビット、ステンシル情報の8ビットに構成されています。1つのテクスチャとしてデプスとステンシルバッファを添付するには、私たちを一緒に深さとステンシル値を格納するGL_DEPTH_STENCIL_ATTACHMENTタイプとのconfigureテクスチャのフォーマットを使用しています。フレームバッファへの1つのテクスチャとして深度およびステンシルバッファを取り付ける例を以下に示します:

glTexImage2D(
  GL_TEXTURE_2D, 0, GL_DEPTH24_STENCIL8, 800, 600, 0, 
  GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, NULL
);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_TEXTURE_2D, texture, 0); 
公開された610元の記事 ウォン称賛96 ビュー330 000 +

おすすめ

転載: blog.csdn.net/wodownload2/article/details/104335451