• ベストアンサー

無名のglTexImage2D

下記のサイトでglGenTextures()でテクスチャオブジェクトの名前を取得せずに、いきなりglTexImage2Dをコールしているコードがあります。 http://marina.sys.wakayama-u.ac.jp/~tokoi/?date=20050926 コードの意味としては「無名のテクスチャオブジェクト」になるという意味であっていますでしょうか? また「無名のテクスチャオブジェクト」となる場合、使用方法としては(無名のため)一時的な使用しか できないものなのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • sygh
  • ベストアンサー率76% (42/55)
回答No.1

OpenGLの「テクスチャ名」という呼称が僕はあまり良くないと思うのですが、テクスチャ名(テクスチャID、テクスチャ ハンドル)の0番は glGenTextures() を呼び出さなくても最初から使えるテクスチャ名になっています。 テクスチャを複数生成して、処理対象を実行時に切り替える必要がある場合は、glGenTextures() を使ってテクスチャ名を生成し、glBindTexture() にカレントのテクスチャ名を指定してから各種テクスチャ操作関数を呼び出す必要がありますが、URL のサンプルではシャドウマップ用の1枚しか使っていないので、デフォルトの生成済み0番テクスチャに対して glTexImage2D() などで処理を行なっている、というだけの話です。 なので、0番テクスチャは他のテクスチャ オブジェクトと同じように特に制限なく使えるはずです。ただ、glGenTextures(), glDeleteTextures() を呼ばなくてもいい分、統一的な生成・解放処理をするのに困るので、大規模なプログラムではあまり使わないと思いますが…… 下記に床井先生による詳しい解説が載っているので熟読してください。 http://marina.sys.wakayama-u.ac.jp/~tokoi/?date=20050614

kp0429
質問者

お礼

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