プロが教える店舗&オフィスのセキュリティ対策術

下記のサイトでglGenTextures()でテクスチャオブジェクトの名前を取得せずに、いきなりglTexImage2Dをコールしているコードがあります。
http://marina.sys.wakayama-u.ac.jp/~tokoi/?date= …

コードの意味としては「無名のテクスチャオブジェクト」になるという意味であっていますでしょうか?

また「無名のテクスチャオブジェクト」となる場合、使用方法としては(無名のため)一時的な使用しか
できないものなのでしょうか?

A 回答 (1件)

OpenGLの「テクスチャ名」という呼称が僕はあまり良くないと思うのですが、テクスチャ名(テクスチャID、テクスチャ ハンドル)の0番は glGenTextures() を呼び出さなくても最初から使えるテクスチャ名になっています。


テクスチャを複数生成して、処理対象を実行時に切り替える必要がある場合は、glGenTextures() を使ってテクスチャ名を生成し、glBindTexture() にカレントのテクスチャ名を指定してから各種テクスチャ操作関数を呼び出す必要がありますが、URL のサンプルではシャドウマップ用の1枚しか使っていないので、デフォルトの生成済み0番テクスチャに対して glTexImage2D() などで処理を行なっている、というだけの話です。
なので、0番テクスチャは他のテクスチャ オブジェクトと同じように特に制限なく使えるはずです。ただ、glGenTextures(), glDeleteTextures() を呼ばなくてもいい分、統一的な生成・解放処理をするのに困るので、大規模なプログラムではあまり使わないと思いますが……


下記に床井先生による詳しい解説が載っているので熟読してください。

http://marina.sys.wakayama-u.ac.jp/~tokoi/?date= …
    • good
    • 0
この回答へのお礼

詳しい説明ありがとうございます!!
URL確認してみます。

お礼日時:2011/04/24 09:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!