• ベストアンサー

無名の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確認してみます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • OPEN GLのテクスチャ座標

    色々なサイトを読むとテクスチャ座標にはS,T,Q,Rがあると書いてあるのですが、具体的にS,T,Q,Rがどういう座標なのかよく分からないのですが、教えて頂けますでしょうか。 自分なりに調べて少し参考になったのは以下のサイトなのですが、ここではS,Tの定義については説明されています。 http://marina.sys.wakayama-u.ac.jp/~tokoi/?date=20040917 ここをみるとS,TがテクスチャファイルのX,Y方向なのかなというのは想像できます。 しかし、別のサイトを見ると二次元のテクスチャを使っているのにS,T,Q,Rを全て定義、即ち四次元の座標を定義している理由が理解できないのです。 何故二次元のテクスチャを使うのに四次元のパラメータが必要なのか、Q,Rはどういう座標系なのか、ここのところがどうしても分からないでおります。 お手数ですが、よろしくお願い致します。

  • 無名関数?

    こんにちは jQuery.fileupload.jsのソースコードを覗いていたのですが いきなり下記のような書き方でコードが表示されていたのですが 意味が分からず悩んでいます。 ======================= (function (factory) { 'use strict'; :     : } (function ($, tmpl, loadImage) {     :     : })); ======================= 最初は無名関数が複数並んでいるのかと思い下記のように修正してみましたが エラーが発生してしまいました。 ======================= (function (factory) { 'use strict'; :     : }); (function ($, tmpl, loadImage) {     :     : }); ======================= 調べてみても上記の書き方をしているサイトが見つからず悩んでます。 ご存知の方がいたら無知な自分に教えて頂けますでしょうか。 よろしくお願いいたします。

  • Flash papervision3D

    初めて質問させて頂きます。よろしくお願いします。 このたびFlashProfessional CS5でpapervisionを使用して3Dの勉強を始めました。 そこで、papervisionについての基本事項を学べたり、また、良いサンプルコードが掲載されているサイトなどが御座いましたら教えて頂けないでしょうか? 取り敢えずの目標として、地面と遠景の空、そしてテクスチャ付きのいくつかのオブジェクトをシーンに配置し、その空間を移動する、という感じの所まで作ってみたいと思っています。 また、先日papervision2.1をダウンロードしたのですが、バージョンの異なるサンプルコードはそのままではコンパイルできない、あるいは意図した動作にならない等のバージョン間での互換性に問題はないでしょうか? どなたかアドバイス頂けましたら幸いです。

    • ベストアンサー
    • Flash
  • 無名配列をsplitする方法

    データベースから吐き出した数百行のデータがあります。それを無名配列に入れているのですが、 1)1列目の一行目を変数に格納したい。 2)7行目を全部足して、その結果を変数に格納したい。 コードが会社にあるため、十分に説明できなければすみません。 一部分でもヒントがございましたら教えてくださいまし。 eval column bind{} #dbh 処理完了 while sth hashref_array() { #無名配列へ格納 my $z = $a->[3]; #一行前のデータを使用 my $b = $z / 12; my $c = $a->[4];  my $d = ($z / $c)**0.38888888; $a=[$x, $b, $c, $d, $e, $f, $g]; }

  • OpenGLでのプログラミングについて質問です

    http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html#7.2 上記URLのソースについて幾つか質問です。 1.以下の用に記述すると、何故以前のラバーバンドを消去することになるのでしょうか? if (rubberband) { /* 以前のラバーバンドを消す */ glVertex2iv(point[pointnum - 1]); glVertex2iv(savepoint); } 2.以下の部分の、staticはどういう役割をしているのでしょうか? void motion(int x, int y) { static GLint savepoint[2]; /* 以前のラバーバンドの端点 */ 3.メインは、以下のように記述されているのですが、OpenGLは通常のCプログラミングと違い、上から下に順次処理されて行っているだけでなく、見えない部分でも何か処理をやっているようなのですが、どういう順序でこのmainは処理されているのでしょうか? int main(int argc, char *argv[]) { glutInitWindowPosition(100, 100); glutInitWindowSize(320, 240); glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGBA); glutCreateWindow(argv[0]); glutDisplayFunc(display); glutReshapeFunc(resize); glutMouseFunc(mouse); glutMotionFunc(motion); init(); glutMainLoop(); return 0; } あと、 http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html#6.1 に書かれている、 glOrtho(-w / 200.0, w / 200.0, -h / 200.0, h / 200.0, -1.0, 1.0); という関数の意味がよく分かりません。 どなたか、どれか一つだけでも良いので解答をお願いします。

  • ブルースクリーン 0×000000D1について

    http://youtu.be/zcdfJMScYbc 動画を参照をしていただければ分かりますが、 DRIVER_IRQL_NOT_LESS_OR_EQUAL エラーコードが0×000000D1(今回)です。 過去にも STOP: 0x10000050 win32k.sys STOP: 0x1000008e ntoskrnl.exe STOP: 0x100000d1 nwlnknb.sys 2013年4月2日に回復コンソール(対象のコードはSTOP: 0x1000008e  ntoskrnl.exe)を使ってみたらBVE5が開けなくなりました>< また、英語が苦手なので御了承ください。 ちなみにPCはマザーボード(CPUを含む)とメモリーは、親父に譲って約3年が経ちます。 親父が使っていた時は最低でも4年は使用していました。

  • Direct3Dアクセラレータが有効にできない

    Direct3DアクセラレータがXPの再インストール後、有効にできません。 ドライバ メインドライバ :vga.dll バージョン   :5.01.2600.0000(日本語) 日付      :2004/08/10  20:00:00 WHQLロゴ付き:はい MIni VDD  :vga.sys VDD :利用不可 DDIバージョン  :不明 DirectXの機能 DirectDraw アクセレーター   :利用不可 Direct3D アクセレーター   :利用不可 AGP テクスチャ アクセレーター:利用不可 です。 どうしたら直せますか? あなたの知識を待っています! 注意 システムは汎用ビデオ ドライバを使用しています。ハードウェアの製造元によって提供されたビデオ ドライバをインストールしてください。 DirectDraw の機能をテストするには、上の[DirectDraw のテスト] ボタンをクリックしてください。 Direct3D の機能は利用できません。ドライバが製造元によって提供されている最新のものであることを確認してください。

  • 無名関数の継承の方法

    あるフレームワークを使用して カスタムした処理を書きたいと思っています。   カスタム処理を書くために、子供オブジェクトから tool関数を参照したいと考えているのですができないようです。   下記の状態で子供オブジェクトから tool関数を参照するにはどのようにすればいいでしょうか。   library.jsはフレームワークのコードなので変更できません。 custom.jsは自由に変更できます。   library.js   (function () {       function tool(num){       //処理     }       window.Parent = function(){     };          Parent.prototype.target = function(){       foo(0);     };   })();   library.js ここまで   custom.js ここから。   function Child(){ };   Child.prototype = new Parent();   Child.prototype.target = function(){ //tool(1); ここでtoolを参照したいが、できない。 };   custom.js ここまで

  • NIKON U2レンズのD70.D80.D90可否

    NIKON U2を保有しています。(28-80mm 70-300mm望遠レンズキット) フィルムが販売されなくなって久しく、コンデジでは物足りないため、 中古のD70 D80 D90あたりを購入したいと考えています。 ボディの価格差は特に気にしていません。あくまでレンズとの相性優先です。 このU2のレンズはD70 D80 D90では使用可能でしょうか? レンズの品番は不明ですが、下記に該当すると思われます。 AiAFズームニッコール70-300mmF4-5.6D - カメラ本体とのセットでキット販売された。最短撮影距離1.5m。アタッチメントφ62mmP=0.75ねじ込み。 AiAFズームニッコール28-80mmF3.5-5.6D(New)(1999年9月23日発売[73]) - 8群8枚。最短撮影距離0.4m。アタッチメントφ58mmP=0.75ねじ込み。 使用用途は、仕事用(簡単な商品撮影)と、家族旅行撮影程度です。 特殊な一部の機能だけが使えない程度であれば、特に問題としません。

  • Direct3Dを有効にする方法

    Direct3Dアクセラレータが利用できませんとでます。 注意欄に ・問題は見つかりませんでした。 ・DirectDraw の機能をテストするには、上の[DirectDraw のテスト] ボタンをクリックしてください。 ・Direct3D の機能は利用できません。ドライバが製造元によって提供されている最新のものであることを確認してください。 と表示されます。 デバイス 名前:VMAdditions S3 Trio32/64 製造元:Microsoft チップの種類:S3 732 DACの種類:S3 メモリ合計:8.0MB ディスプレイのモード:1024*768(32bit)(75Hz) モニタ: ドライバ メインドライバ:vpc-s3.dll バージョン:13.548.0000.0000(英語) 日付:2005/11/17 04:48:00 WHQLロゴ付き:はい MiniVDD:s3legacy.sys VDD:利用付加 DDIバージョン:不明 DirectXの機能 DirectDrawアクセラレータ:使用可能 Direct3Dアクセラレータ:利用できません AGPテクスチャアクセラレータ:利用できません 利用できるようになる方法を教えてもらえませんか。 お願いします。