2011-04-14 20 views
3

OpenGLで初期化されていないテクスチャを簡単に作成する方法はありますか?OpenGLの初期化されていないテクスチャ

私の現在のアプローチは、次のようになります。

std::vector<byte> nothing = std::vector<byte>([size of texture in bytes]); 
glTexImage(
    target, 
    level, 
    internalFormat, 
    size, 
    border, 
    format, 
    type, 
    nothing 
    ); 

が、これは何のアップロードを必要とします。

もう1つのアプローチは、(データなしでglBufferDataを呼び出すことによって)初期化されていないバッファを作成し、このバッファからテクスチャを作成することです。しかし、アフリカンはこれに2倍のメモリフットプリントを持っています。

帯域幅や余分なメモリを使用せずに後で書き込まれるテクスチャを作成する良い方法はありますか?

答えて

6

データのNULLポインタを渡すだけです。 TexImage1D、 TexImage2D、またはTexImage3Dのデータ引数がある場合

:これが最後の段落、それはOpenGLの1.2仕様からバージョン1、セクション3.8.1、ページ118以降のOpenGLに指定されています方法ですヌル ポインタ( Cの実装におけるゼロ値のポインタ)、一次元、二次元、または 三次元テクスチャアレイは 指定されたターゲット、 レベル、internalformat、幅、高さ、 及び深さで作成されしかし、指定されていない画像 の内容です。この場合、ピクセル値 はクライアントメモリではアクセスされず、ピクセル処理は行われません( )。ただし、データポインタは有効ですが、 が生成されますが、正確には となります。

+0

woha ...私はちょうどこれを知りませんでしたか? opengl.orgのドキュメントはこれについて何も言わないのですか?これが言及されている特定のテキストを教えてください。 – fho

+0

ああありがとう。私はドキュメントやいくつかのフォーラムを検索していましたが、仕様を調べていませんでした – fho

関連する問題