■OpenGLの仕様をgetする
OpenGLはボードによって例えばテクスチャのメモリ容量などのスペックが全然違う。
ボードのスペックを使いきるようなプログラムを書く場合、
それらの仕様をあらかじめ頭に入れてから書く必要がある。
●http://www.asahi-net.or.jp/~yw3t-trns/opengl.htm
●●toglinfo 1.02 http://www.asahi-net.or.jp/~yw3t-trns/toglinfo/toglinfo.htm
●デプスバッファのサイズとか、使用できる光源の数等
前者→findvis(findpix2) というコマンド
後者→toglinfo
●toglinfo で得られる情報
GL_VERSION: OpenGL のバージョン、リリース番号
GL_RENDERER: レンダラ
GL_VENDOR: ベンダ
GL_EXTENSIONS: サポートされる拡張機能
GL_MAX_ATTRIB_STACK_DEPTH: アトリビュート・マトリックス・スタックの容量 最小値16
GL_MAX_CLIP_PLANES: 定義可能なクリップ面の数 最小値6
GL_MAX_EVAL_ORDER: 1次元、2次元の算出でサポートされる最大算出式数 最小値8
GL_MAX_LIGHTS: 光源数 最小値8
GL_MAX_LIST_NESTING: ディスプレイ・リストの再帰最大数 最小値64
GL_MAX_MODELVIEW_STACK_DEPTH: モデルビュー・マトリックス・スタックの容量 最小値32
GL_MAX_NAME_STACK_DEPTH: セレクション・ネーム・スタックの容量 最小値64
GL_MAX_PIXEL_MAP_TABLE: glPixelMap で使用するルックアップ・テーブルの最大サポートサイズ 最小値32
GL_MAX_PROJECTION_STACK_DEPTH: プロジェクション・マトリックス・スタックの容量 最小値2
GL_MAX_TEXTURE_SIZE: テクスチャ画像の最大幅または最大高 最小値32
GL_MAX_TEXTURE_STACK_DEPTH: テクスチャ・マトリックス・スタックの容量 最小値2
GL_MAX_VIEWPORT_DIMS: ビューポートでサポートされている最大幅と最大高
GL_SUBPIXEL_BITS: サブピクセルの精度のビット数 最小値4
GL_POINT_SIZE_RANGE: アンチエイリアシングでサポートしている点の最小と最大サイズ 最小値1,1
GL_POINT_GRANULARITY: アンチエイリアシングでサポートしている点のサイズの粒度
GL_LINE_WIDTH_RANGE: アンチエイリアシングでサポートしている線幅の最小と最大サイズ 最小値1,1
GL_LINE_WIDTH_GRANULARITY: アンチエイリアシングでサポートしている線幅の粒度
GLU_VERSION: GLU のバージョン
GLU_EXTENSIONS: GLU の拡張機能
●findvis, findpix2.0.3.2 http://www.asahi-net.or.jp/~yw3t-trns/findvis.htm
http://www.asahi-net.or.jp/~yw3t-trns/opengl/findvis/findvis.htm
■VAIO Intel 815EM で実行した結果。
toglinfo : glut Version 1.02 T.Teranishi
GL_VERSION: 1.1.2 - Build 4.13.01.2872
GL_RENDERER: Intel Solano
GL_VENDOR: Intel
GL_EXTENSIONS: GL_ARB_multitexture GL_ARB_texture_env_add
GL_ARB_transpose_matrix GL_EXT_abgr GL_EXT_bgra
GL_EXT_clip_volume_hint GL_EXT_compiled_vertex_array
GL_EXT_cull_vertex GL_EXT_fog_coord GL_EXT_packed_pixels
GL_EXT_packed_pixels_12 GL_EXT_paletted_texture
GL_EXT_rescale_normal GL_EXT_secondary_color
GL_EXT_separate_specular_color GL_EXT_stencil_wrap
GL_EXT_texture_env_add GL_EXT_texture_env_combine
GL_EXT_texture_filter_anisotropic GL_IBM_texture_mirrored_repeat
GL_WIN_swap_hint
GL_MAX_ATTRIB_STACK_DEPTH: 16
GL_MAX_CLIP_PLANES: 6
GL_MAX_EVAL_ORDER: 32
GL_MAX_LIGHTS: 16
GL_MAX_LIST_NESTING: 64
GL_MAX_MODELVIEW_STACK_DEPTH: 32
GL_MAX_NAME_STACK_DEPTH: 128
GL_MAX_PIXEL_MAP_TABLE: 65536
GL_MAX_PROJECTION_STACK_DEPTH: 2
GL_MAX_TEXTURE_SIZE: 1024
GL_MAX_TEXTURE_STACK_DEPTH: 10
GL_MAX_VIEWPORT_DIMS: 1620 1620
GL_SUBPIXEL_BITS: 3
GL_POINT_SIZE_RANGE: 0.500000 10.000000
GL_POINT_GRANULARITY: 0.125000
GL_LINE_WIDTH_RANGE: 1.000000 3.000000
GL_LINE_WIDTH_GRANULARITY: 0.500000
GLU_VERSION: 1.2.2.0 Microsoft Corporation
GLU_EXTENSIONS: GL_EXT_bgra
Find Pixelformat : OpenGL for Windows 9X,Me/NT,2000
ver. 0.2.1 K.Oda
ver. 0.3.1 T.Teranishi
ver. 0.3.2 K.Oda and T.Teranishi
Display 1024 x 768 : color 16 bits
$( 3) 1, RGBA 5/6/5/0, WIN, GL
$( 4) 2, RGBA 5/6/5/0, db, WIN, GL
$( 5) 8, RGBA 5/6/5/0, db, Z 32, S 8, accum 11/11/10/0, WIN, GL, GFMT
$( 5) 9, RGBA 5/6/5/0, db, Z 16, S 8, accum 11/11/10/0, WIN, GL, GFMT
●●http://www.asahi-net.or.jp/~yw3t-trns/opengl/samples/index.htm
いろいろ役に立つサンプルプログラム。すばらしい。
JPEG ファイルへの画面セーブサンプルプログラム
JPEGファイルのテクスチャマッピングサンプルプログラム
ftp://ftp.uu.net/graphics/jpeg/
ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz
http://www.gzip.org/zlib/
zlib 1.1.3 ftp://ftp.info-zip.org/pub/infozip/zlib/zlib.tar.gz
http://www.libpng.org/pub/png/
http://www.libpng.org/pub/png/libpng.html
1.2.1 http://www.libpng.org/pub/png/src/libpng-1.2.1.tar.gz
■OpenGLで色をまぜあわせるときの理屈
●http://www.wakhok.ac.jp/~momma/lec2000/Graphics_Programming/
●http://www.wakhok.ac.jp/~momma/lec2000/Graphics_Programming/9/lecture9.html
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
これが普通の色のまぜあわせ方なり。
glBlendFunc(GL_ONE, GL_ONE)
などとすると、とにかくかさねるごとに色が追加されていくようになるわけだ。
そうすると光をかさねていったような効果を期待できるってことだ。
→半透明物体と普通の物体が重ねあわさるとき、Depth bufferの扱いに注意。
まず普通の物体を全部かいてから、半透明物体を書く直前にDepth bufferへの書き込みを禁止する。
glDepthMask(GL_FALSE);
また同時に半透明の物体についても奥から順にかいていくという工夫が必要。
●http://www.wakhok.ac.jp/%7Emomma/lec2000/Graphics_Programming/7/lecture7.html
→glGenTextures( )で使用する個数分の番号を配列の中に生成
→glBindTexture( )でそのテクスチャの番号を指定
http://www.wakhok.ac.jp/%7Emomma/lec2000/Graphics_Programming/10/lecture10.html
http://www.wakhok.ac.jp/%7Emomma/lec2001/Graphics_Programming/12/lecture12.html
●http://www.wakhok.ac.jp/%7Emomma/OpenGL/resources.html
http://www.wakhok.ac.jp/~momma/plib/ssg/ssg.html
http://www.gimlay.org/~andoh/opengl/oglfaq/transparency.htm
OpenGL specification extension
●●http://spin.s2c.ne.jp/links.html
http://www.nvnews.net/
http://www.flipcode.com/
●glClock http://lpserv01.bais.chubu.ac.jp:8080/~g93088/glclock/
■Performer
http://oss.sgi.com/projects/performer/
●IRIS Performer プログラミングガイドhttp://www.tohwa-u.ac.jp/~kukimoto/VR/docs/Performer/start.html
CAVEのグラフィックス・ライブラリ、CAVE library, pfCAVE library
●IRIS Performer を選択した理由
1. リアルタイム処理に適している。マルチCPU,マルチタスク対応 (OpenGLは,シングルCPU)
2. 関数の種類が豊富
3. IRIS Performer は OpenGL ベース
4. 3D CG software で作成したモデリングデータをオブジェクトファイルに変換すれば描写可能になる