[TOP] → [OpenGL] → [OpenGL FAQs] → [OpenGL FAQ 追加分]

OpenGL FAQ 追加分


Last Update 999.011.005


--------------------------------------------------------------------
[Q] glutIdleFunc() を使用して、アニメーションプログラムを作っています。
    表示スピードを変えられるようにしたい(遅く表示したい)のですが、
    よい手はないでしょうか。
    なお、sleep() では秒単位で待ち状態になってしまします。
    0.1秒単位くらいで調整できるようにしたいのですが...

[A] usleep()をつかえば、マイクロ秒単位で設定できます。
    0.1 秒なら、usleep(100000);です。
    また gettimeofday や times で
    自分で経過時間を見て制御する方法があります。
    IRIX なら clock_gettime や非常に精密な dmGetUST なども使えます。
    Windows なら Sleep でミリ秒単位で制御できますし、自分で時間を計測
    するなら GetTickCount が使用できます。

--------------------------------------------------------------------
[Q] OpenGL でつくったプログラムを実行して、サイズ変更をすると実行画面
    が表示されたり、表示されなかったりします。
    ウィンドウ自体は、ちゃんと表示されてます。
    なぜでしょうか? (Windows)

[A] サイズ変更のハンドラはしっかりインプリメントしてあると仮定します。

    カレントリソースコンテキストを表示画面に
    glMakeCurrent(hdc,hrc)したままになっている状況でこのような症状が
    現れました。
    インプリメントした各関数の中身をglMakeCurrent(hdc,hrc);
    glMakeCurrent( 0, 0 );でラップしたらうまく動きます。

    最初からglMakeCurrent(hdc,hrc)したまま使い続けず、
    OpenGLコードを使ってる各関数でglMakeCurrent(hdc,hrc)、glMakeCurrent(
    hdc,NULL)を設定してください。

--------------------------------------------------------------------
[Q] Javaで、OpenGLは、使えるのでしょうか?

[A] OpenGL Java binding が使えます。

    OpenGL Java binding は OpenGL の各関数を wrapper でくるんで、
    Java から利用できるようにしたものです。

    各種 OpenGL Java binding が存在し、今のところ標準の物はありません。
    現在 OpenGL の標準化団体 ARB によって仕様策定の段階です。

    非公式の OpenGL Java binding としては主に以下のものがあります。
    Magician http://www.arcana.co.uk/products/magician
    GL4Java http://www.jausoft.com/gl4java.html
    JSparrow http://www.will.or.jp/~jsparrow/
    一覧は以下の URL にあります
    http://www.opengl.org/Documentation/Implementations/Languages.html

    以下の URL も参考になります。

    GL4Java自分FAQ
    http://www.asahi-net.or.jp/~cs8k-cyu/java3d/gl4java_faq.html

    Java 3D FAQ
    http://tech.webcity.ne.jp/~andoh/java/3d/j3faq.html

    また OpenGL を直接利用するわけではありませんが、
    Java 3D API もハードウエア依存の描画部分は OpenGL 1.1 を使っています。

--------------------------------------------------------------------
[Q] OpenGLがDirect3Dと比べて優れている点は何でしょう?
    また、それぞれが良くよく用いられている分野は何でしょう?

[A] それぞれ以下の特徴を持ちます。

    DirectX(6.1)
    ・いまのところWindows9Xでしか動かない
    ・バージョンアップが激しく追いかけるのが大変
    ・安価で高速なハードウェアアクセラレータが多い
    ・ハードウェアアクセラレータ間での非互換性が結構ある
    ・プログラムのミスで容易にPCがクラッシュする
    ・MMX,3DNow,SSE等に対応

    OpenGL
    ・機種依存が少ない
    ・対応するハードウェアアクセラレータが(WindowsPCでは)
      少ない、DirectXより遅い(兼用の物の場合)
    ・かなり枯れているので、バージョンアップの頻度は少ない。安定している。
    
    一般的にハイエンドの CG アプリケーションでは OpenGL
    ゲーム用途には DirectX が使われているケースが多いようです。
    OpenGL が使われているゲームもあります。

    97年頃のDirectX3/Direct3Dのイミディエイトモードとの比較(古い情報)

    http://tech.webcity.ne.jp/~matumot/microsoft-2.html

    ID SoftwareのJohn Carmack氏の分析
    http://tech.webcity.ne.jp/~andoh/opengl/199701/19970113.html

    97年10月に出荷されたDirectX5 より
    ExecuteBufferからOpenGLのglDrawElementsライクな
    DrawPrimitiveに変更されたため、上記の情報から状況が変っています。

    これら DirectX の変更は John Carmack氏をはじめとるする 
    Game Developer の意見が反映された結果であり、
    OpenGL の設計の優位性を物語っていると思われます。

--------------------------------------------------------------------
[Q] OpenGL FAQ に書いてある、Delphi用OpenGLヘッダの置いてある
    URLが、引っ越しされたのかNot Foundになります。
    どなたか移動先を知っていたら教えてください。
    もしくはglaux.pasを頂けると嬉しいです。

[A] GLPanel (glwaux.zip) として配布されていたのですが、
    行方不明です。どなたかお持ちの方がいらっしゃれば
    ご連絡ください。

    又以下の書籍が発行されており、参考になるでしょう。

    Delphi Developer's Guide to OpenGL 
    by Jon Jacobs 
    Price: $49.95
    Paperback - 450 pages Book & Cd edition (June 1999) 
    Wordware Publishing; ISBN: 1556226578 



--------------------------------------------------------------------
[Q] OpenGL API コールのチェック・デバックに使える便利なツールはありますか?

[A] 以下のツールが活用できます。

    ZAPdb (OpenGL Interactive Debugger Version 1.0)
    http://www.pc.ibm.com/us/intellistation/intellitech/zap.html
    OpenGLのAPIコールを引数付きでヒストリとして吐き出すことが出来ます。
    
    SGI が IRIX/NT 用に ogldebug を提供しています。
    IRIX 用は IDO の中に、NT 用は SGI Graphics SDK の tools の中に
    あります。
    
    IRIX 版は gl_dev.sw.ogldebug パッケージを開発環境の CD-ROM から
    install してください。 /usr/sbin/ogldebug に入ります。
    
    NT 版は SDK の CD-ROM を 2万円で購入するか、もしくは
    SGI Developer Program の Online Member 以上の登録があるなら、
    Web から download 可能です。
    http://www.sgi.com/developers/nt/sdk/
    install すると C:\SGI\dev\graphics\tools\ogldebug に入ります
    
    SGI Graphics SDK は Visual WorkStation の最新機能、拡張機能を
    利用するのに必用なライブラリ等が含まれたものです。

--------------------------------------------------------------------
[Q] OpenGL で分子構造の描画を行うことを考えています。
    何か活用できる情報はありますか?

[A] 分子構造の描画についての web page

    http://www.ps.toyaku.ac.jp/~dobashi/database/index.html
    MDL Chemscape Chime というプラグインを利用して、ページ上
    で分子が回転するものです。このプラグインは VRML を利用しています。

    SGI が、まさに分子構造描画のための Graphics API 
    Molecular Inventor というを昔リリースしていました。
    メンテナンスモードに入ってしまい、今どうなっているのか良く解りません。

    上記URL にもあるように VRML を利用するのが結構一般的です。
    分子式から、VRML ファイルを自動生成させたりするプログラムが
    比較的容易に作れるのが利点です。

--------------------------------------------------------------------
[Q] オブジェクトモデルを C言語のソースコードに変換したいのですが?

[A] 静的なオブジェクトの変換なら
    PolyTransというモデルデータコンバートソフトが
    ポリゴンデータを OpenGLでの C言語ソース に変換してくれます。

    http://www.okino.com/conv/demos.htm

    3DWin というコンバータも C言語のソースを出力してくれます。
   
    http://www.stmuc.com/thbaier/3dwinfo.html

    動き、アニメーションが必用なら VRML の活用を考慮してみましょう。

--------------------------------------------------------------------
[Q]  自動でハードウェアアクセラレーションの対応をチェックしてくれる
     アプリケーションや、OpenGL-API(アルゴリズム)があれば
     教えてください。

     glGetString(GL_RENDERER); で取得できる情報が利用できます。
     ハードウェア固有のものなので、各環境によってリターン値は変ります。

     xglinfo のサンプルソール(gl_dev.sw.samplesに含まれます)が参考になります。

     SGI IRIX  なら CRIME
     Visual WorkStation なら Cobalt
     Windows で Intergraph の、あるボードなら GLZICD 04.02.00.00
     Windows で 3D ボード無しなら GDI Generic 
     という情報が返ってきます。

--------------------------------------------------------------------
[Q] aux ライブラリを用いてモデラを作っています。
    マウスのドラッグの部分を作っているのですが、
    aux にマウスに関する補助関数が少ないためなかなか実装することができません。
    何かいい方法は無いでしょうか?

[A] Xwindowのイベントが活用できます。

    サンプルソース

--------------------------------------------------------------------
[Q] 1〜2万個の球(ソリッド表示)がお互いの位置を変えながら動く様子を
    アニメーション表示しようとしています。
    1つの球を20面体で表示していますが、表示速度が非常に遅くて困って
    います。
    高速に表示するよい方法はないものでしょうか?

[A] 1〜2万個も出す、ということであれば、やはり1枚のポリゴンに円をテクスチャ
    として貼るの方法が候補にあがります。
    アルファ値をうまく設定してやれば三角ポリゴンで球っぽく見せることができます。
    これを、すべてのポリゴンが視点に垂直な方向を向くように置いてください。
    この様な面をビルボードと呼びます。

    あるいは、XY平面、YZ平面、XZ平面にそれぞれ平行な3枚の四角ポリゴンを
    中心点で重ねて、両面ともレンダリングするようにしてもよいでしょう。

--------------------------------------------------------------------
[Q] 4辺形を組み合わせて円筒を描いているのですが、
    各4辺形とも片面しか描画されません。
    裏表両面描画させたいのですが、方法はありますか?

[A] 裏面も描画してライティングの効果もつけたいのであれば、

    glDisable(GL_CULL_FACE);
    glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);

    を入れれば大丈夫でしょう。
    裏面にも任意の材質パラメータを設定できます。

--------------------------------------------------------------------
[Q] 3次元図形を表示した上に文字を表示したいと思っています。

    アジソンウィスレイの「OpenGL Programming guide」
    の223ページに文字フォントをビットマップで定義して使用する部分が
    あったので、そのまま使用しているのですが、
    glRasterPos3d() を使用して位置を指定した後、3次元空間中に文字を書く
    ため、図形が文字の前に来ると文字が見えなくなってしまします。
    必ず見えるように表示する方法をご存知の方おられましたら、お願いします。

[A] 文字を描画する前に

        glDisable(GL_DEPTH_TEST);

    を行なって下さい。終ったら

        glEnable(GL_DEPTH_TEST);

    を行なって下さい。

--------------------------------------------------------------------
[Q] GLUT の関数 glutCreateMenu() を用いてメニューを作っています。
    メニュー内容を日本語表記したいのですが、
    できるのでしょうか?

[A] Windows95, NT(いわゆるWintel機)ではOK。
    Mac Mesa3D, Apple OpenGLでは,一部の文字が文字化け。
   →例えば「表示」はだめで,「\表\示」とすると表示されます
    IRIX, Sunは,だめでした。
-------------------------------------------------------------------
[Q] サンプルプログラムなどに gl/image.h
    とありますが、これはいったい何物なのでしょうか。
    SGIに特有のものだということらしいですが。

[A] SGI RGB イメージをハンドリングする関数のヘッダーファイルです。
    OpenGL の前身である IRIS GL の頃に良く一緒に使われていました。
    iopen, fiopen, ibufalloc, ifilbuf, iflush, iflsbuf, 
    isetname, isetcolormap, iclose, putrow, getrow 等の関数です。

    ソース内に上記関数が使われており、IRIS 以外の環境で動かしたい
    場合は、gl/image.h 無しでもいけるよう書き換える必用があると思います。
    上記関数が使われて無く、IMAGE 等の構造体も無いようなら
    その include を無効にしてみてください。

    以下のポインタが参考になります。

    SGI RGB フォーマット
    http://reality.sgi.com/paul_asd/sgiimage.html

    IRIS なら man 4 rgb
    又は http://techpubs.sgi.com/ で rgb をキーワードに検索

    Paul Haeberli's SGI .rgb ファイルローダー/セーバー
    http://tech.webcity.ne.jp/~matumot/fstimage.zip

--------------------------------------------------------------------
[Q] 英語圏の OpenGL メーリングリストはありますか?
[Q] TGS の Open Inventor は日本でも購入できますか?
[Q] 16 bit のグレースケール画像を生成できるでしょうか?
[Q] OpenGL が速く動く NOTE PC はありませんか?
[Q] glwMDrawingAreaWidgetClass が無くてコンパイル出来ません。
[Q] GLUT のメニュー操作時に、描画をストップさせておく方法がありますか?
[Q] Apple の純正 OpenGL のサポートする環境は、どのようなものですか?
[Q] 組込み用とで使われている OpenGL とはどんなものでしょう?
[Q] INTERGRAPH TDZ2000 GT1 の立体視における解像度の設定のパラメータについて教えてください
[Q] フレームレートを一定の回数で安定させたいのですが、どのようにしたら良いでしょう?
[Q] 無限に続くの直線と面を表示したいのですが、どのようにしたら良いでしょう?
[Q] オフクリーンレンダリングはどのようにしたら良いのでしょうか?
[Q] 高速化の為に、フレームバッファの内容をコピーして利用できますか?
[Q] 描画が思ったような色にならなかったり、消えてしまったりします。なぜですか?
[Q] 3DCG の仕事に就きたいのですが、どうしたら良いでしょう?
[Q] 視体積の設定方法がわかりません。gluLookAt は glOrtho はどのように使えば良いのでしょうか?
[Q] OpenGL はマルチ CPU に対応しているのでしょうか?
[Q] GLUT: glutCreateWindow で作られるウィンドウをリサイズ出来ないようにしたいのですが?
[Q] SGI Visual Workstation 320,540 の光源の数はいくつでしょうか?
[Q] オーバーレイのように二次元のものを描くにはどのようにしたら良いでしょう?
[Q] ディスプレイリストからバウンディングボックスを作成する方法はありますか?
[Q] glutMainLoop() のループを抜けることができますか?
[Q] GLUT とともに使う GUI toolkit として何が最適でしょうか?
[Q] 布の動的変形モデル、ドレープはどのように表現したら良いのでしょうか?
[Q] 3D Texture Mapping は、どの環境で、開発、実行が可能ですか?
[Q] GLUT: glutReshapeWindow を呼ぶと、描画がおかしくなります。なぜでしょう?
[Q] 描画に遅延があります。解消する方法はありますか?
[Q] 平行光源の方向設定で障害が発生しています。回避する方法はありますか?
[Q] IRIX での OpenGL から Windows での OpenGL への移植に関する情報は?
[Q] glReadPixels で取得した ZBuffer の値は、どのような値なのでしょうか?
[Q] MS intelliMouse を使いたい、ホイールの入力情報を取得するには?
[Q] glutStrokeCharacter で日本語が使えますか?
[Q] OpenGL でのビッグエンディアン・リトルエンディアンの取り扱いは?
[Q] テクスチャで背景を描くことはできますか?
[Q] GLUT: ウィンドウメッセージのインターセプトは出来ますか?
[Q] AUX と GLUT の混在は可能ですか?
[Q] GTK で OpenGL が使えますか?
[Q] ポリゴンが思ったように描画されません。なぜでしょう?
[Q] 3D のものの背景に 2D 描画する方法はありますか?
[Q] AUX の DEMO プログラムはどこにありますか?
[Q] 力覚フィードバックのファントムと、その開発環境ゴーストについて教えてください。
[Q] OpenGL が高速に動く機種として、何を選択したら良いでしょうか?
[Q] Mini GL とはなんですか?
[Q] OpenGL 画面上で動画映像を表示したいのですが、どのようにしたら良いですか?
[Q] OpenGL で描画した画面を画像として保存したいのですが、どうすれば良いですか?
[Q] VRML data を OpenGL で再生したいのですが?
[Q] Mesa と OpenGL の違いは、どのようなところにあるのでしょうか?
[Q] マルチパスレンダリングに最適な環境は?
[Q] VWSのメモリ機構はO2などのUMAとほぼ同じと考えてよいのでしょうか?
[Q] 2次元画像のアルファブレンディングはどのように行えば良いのでしょうか?
[Q] FLTK の使い方について教えてください。
[Q] OpenGL の拡張関数とはどんなものですか? どのようにすれば使えますか?
[Q] WindowsNT 上の X Server ソフトで動いているアプリケーションの移植
[Q] wglUseFontOutlines は日本語が使えますか?
[Q] 大量のテクスチャを使いたいのですが、適切なチューニング方法を教えてください。
[Q] PlayStation 2 で OpenGL が使えますか?
[Q] もしかして、これって最後の質問?
--------------------------------------------------------------------




andoh@opengl.com