現在地メニュー >> GLSL >> GLSL編08
INDEX:GLSL編07<< GLSL編08 >>GLSL編09?

ポイントサイズ


シェーダでのポイントサイズの変更を行えば、
頂点毎にその大きさを変更することが可能である。

使い方

  1. glEnable(GL_VERTEX_PROGRAM_POINT_SIZE);でシェーダでのポイントサイズ変更を有効化。
  2. 組み込み変数「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;//頂点サイズを適当に計算
}
▲この例では、てきとうに重みを与えて頂点サイズを計算している。

サンプルコード


目次

― その他 ―

Wiki内検索

計測中...(07.10.8〜)

Save The World






▲よろしければ広告のクリックもお願いします


▲ランキングに参加しました

管理人/副管理人のみ編集できます