- ベストアンサー
OpenGLの3Dテクスチャのエラーと対処方法
- OpenGLの勉強を始めた初心者が3Dテクスチャを試したところエラーが発生しました。ボリュームデータのヘッダは読めたが、glTexImage3Dのアドレス取得に失敗したようです。原因と対処方法について教えてください。
- Windows XP + Visual C++6.0の環境でOpenGLの勉強を始めました。サンプルプログラムは通りましたが、3Dテクスチャを試す際にエラーが出ました。glTexImage3Dのアドレス取得に失敗しているようです。ヘッダの読み込みは成功しているので、原因と対処方法を教えてください。
- OpenGLの勉強をしている初心者です。Windows XP + Visual C++6.0の環境でサンプルプログラムを試しましたが、3Dテクスチャを使用する際にエラーが発生しました。glTexImage3Dのアドレス取得に失敗したようです。ヘッダの読み込みはできているので、原因と対処方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
OpenGLの特定機能が有るか無いかはDLLではなくハードウェアの問題です。 (又はVGAカードのドライバの問題) まずは[1]からtoglinfo102glut.exeをダウンロードして実行して下さい。 このプログラムは現在のPC環境におけるOpenGLの情報を調べてくれます。 生成されたtoglinfo.txtから GL_VERSION, GL_RENDERER, GL_VENDORの項目についてと、 GL_EXTENSIONSから GL_EXT_texture3D が存在するか を教えて下さい。 あと、どの様なPCを使用しているのかも、ついでに教えて下さい。 [1] http://www.asahi-net.or.jp/~yw3t-trns/toglinfo/toglinfo.htm
その他の回答 (2)
- bulgaris
- ベストアンサー率50% (8/16)
現在の環境はOpenGLのバージョンが1.1と低く、拡張機能もGL_EXT_texture3Dがサポートされているために3次元テクスチャの機能が使えません。 そのためwglGetProcAddress("glTexImage3D")がNULLを返すものと思われます(*1。 対処法1: どうしても3次元テクスチャが使いたい場合 ATI RADEONを使用しているにも関わらず、GL_RENDERERでGDI Generic とか GL_VENDORでMicrosoft Corporationとか表示されるのが気になる(*2 ので、ドライバが正しくインストールされているのか確認してみる。 ドライバを正しくインストールしたにも関わらず、GL_VENDORがMicrosoftのままだったり、OpenGLのバージョンも低いとか、GL_EXT_texture3Dがサポートされないままだったら、ビデオカードを新しいもの(*3 に買い換える必要があります。 対処法2: 3次元テクスチャを使用する理由が特に無い場合 とりあえず3次元テクスチャの事は忘れて、OpenGLの勉強を進めましょう。 *1: 書き忘れていましたけど、wglGetProcAddressがNULLを返す理由が、ANo.1で列挙した"考えられる問題点"になります。 *2: toglinfoのWEBページに掲載している参考資料を見ると、ATI Radeon X800 XTを正しく使っている場合は、そのあたりの表示もATI絡みの内容になる。 *3: 対応するOpenGLのバージョンが、より上位であるビデオカードの意。
- bulgaris
- ベストアンサー率50% (8/16)
考えられる問題点 1: OpenGLのバージョンが古いために3次元テクスチャが使えない(OpenGL1.2以上から対応)[1,2] 2: レンダリングコンテキストを作っていない[3,4] 対処法 1: 他のVGAカードで試してみる 2.1: GLUTを使っているのであればglutInit()かglutCreateWindow()を読んだ後にwglGetProcAddressを使う 2.2: wglCreateContextでレンダリングコンテキストを作った後にwglGetProcAddressを使う 2.3: GLEWを使う[5] [1] http://marina.sys.wakayama-u.ac.jp/~tokoi/?date=20040212 [2] http://www.asahi-net.or.jp/~yw3t-trns/opengl/version/ [3] http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/ntopnglr_6yer.asp [4] http://www.devmaster.net/articles/opengl-extensions/ [5] http://chihara.naist.jp/people/STAFF/imura/computer/OpenGL/glew/disp_content ・・・と、wglCreateContextやwglGetProcAddressを使ったことも無い自分が答えて見ました。
お礼
bulgaris 様 ATI RADEON 7000のドライバを再インストールすべく、ATIのサイトを調べましたが古いボードのためかドライバが見付かりませんでした。ビデオ・ボード或いはPC全体を更新するまで3次元テクスチャの事は忘れ、出来る範囲でOpenGLの勉強を進めることと致します。再三にわたる丁寧で正確な御回答を有難うございました。
補足
bulgaris 様 詳細な回答を有難うございます。 先ずはOpenGLの更新日付を調べました。以下の通りで前世紀のものも混じっています。そこでMicrosoftとSGIのサイトを見ましたが同程度の古さでした。OpenGL1.2以降をダウンロードするには如何すればよいですか? C:\Program Files\Microsoft Visual Studio\VC98\Include\GL gl.h 2003/02/19 glu.h 1998/04/26 glut.h 2002/12/26 C:\Program Files\Microsoft Visual Studio\VC98\Lib glu32.lib 1998/05/13 glut32.lib 2001/11/08 Opengl32.lib 1998/05/13 C:\WINDOWS\system32 glu32.dll 2004/08/04 glut32.dll 2001/11/08 opengl32.dll 2004/08/04
補足
bulgaris 様 重ねて御回答頂き有難うございます。 toglinfo.batの出力は以下の通りでした。 --------------------------------------- GL_VERSION: 1.1.0 GL_RENDERER: GDI Generic GL_VENDOR: Microsoft Corporation GL_EXTENSIONS: GL_WIN_swap_hint GL_EXT_bgra GL_EXT_paletted_texture --------------------------------------- 使用PCは以下の通りです。 購入年度 2001年 型番 Dell PWS340 CPU P4 2GHz メモリ 512MB HDD 80GB * 2 ビデオボード ATI Radeon 7000 / Radeon 7000 VE family OS Windows XP SP2 以上