最終更新:
mikk_ni3_92 2010年06月14日(月) 20:40:06履歴
現在地:メニュー >> GLSL >> GLSL編08
INDEX:GLSL編07<< GLSL編08 >>GLSL編09?
【例】
頂点毎に点の大きさを調整できると、
「視点位置から近いほど点を大きくし、遠いほど点を小さく表示する」
といったことができる。
以下の図において、「EyeSpace」は視点位置が原点となっている座標系。(点眼座標系)

そこで、頂点座標をこの座標系に変換した時の長さを点の大きさに反映させると
視点からの距離に応じた点の大きさになる。
【例】:glsl.vert
INDEX:GLSL編07<< GLSL編08 >>GLSL編09?
- glEnable(GL_VERTEX_PROGRAM_POINT_SIZE);でシェーダでのポイントサイズ変更を有効化。
- 組み込み変数「gl_PointSize」に頂点サイズを指定する
【例】
//-----main.cpp-----// … … glEnable(GL_VERTEX_PROGRAM_POINT_SIZE); … … //-----glsl.vert(頂点シェーダ)-----// … … gl_PointSize = 10; … …
頂点毎に点の大きさを調整できると、
「視点位置から近いほど点を大きくし、遠いほど点を小さく表示する」
といったことができる。
以下の図において、「EyeSpace」は視点位置が原点となっている座標系。(点眼座標系)

そこで、頂点座標をこの座標系に変換した時の長さを点の大きさに反映させると
視点からの距離に応じた点の大きさになる。
【例】:glsl.vert
//頂点シェーダ void main(void) { //投影変換 (モデルビュー * プロジェクション) * 頂点座標 gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; … … vec4 V = gl_ModelViewMatrix * gl_Vertex; //視点座標系 … … float pSize = length(V); pSize *= pSize; //適当に重み付け gl_PointSize = 300.0/pSize;//頂点サイズを適当に計算 }▲この例では、てきとうに重みを与えて頂点サイズを計算している。
- GLSL編08::まとめ1(点のサイズ変更)
- GLSL編08::まとめ2(視点からに距離で変動する)