現在地 >> メニュー >> 基本編20
INDEX:基本編19 << 基本編20 >> 基本編21

ポイントスプライト


ポイントスプライトによって、
glBegin(GL_POINTS)などで描画する「点」にテクスチャマッピングする事が出来る。

※この機能はOpenGL1.5以上で使用可能である。

使い方


基本的にはテクスチャ作成だが、「glTexEnvi()関数」でポイントスプライトを設定。
「glEnable()関数」で有効化する。

[例]

... ...
	//テクスチャ作成
	... ...
	glBindTexture(GL_TEXTURE_2D, texture[0]);
	glTexEnvi(GL_POINT_SPRITE, GL_COORD_REPLACE, GL_TRUE);//ポイントスプライト
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); //拡大フィルタ
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); //縮小フィルタ
	... ...
... ...

	glEnable(GL_TEXTURE_2D);
	glEnable(GL_POINT_SPRITE);//有効化
	glPointSize(10);
	glBegin(GL_POINTS);
	glVertex3f(1,0,0);
	glEnd();
	glDisable(GL_POINT_SPRITE);//無効化
	glDisable(GL_TEXTURE_2D);
 ... ...

その他

<有効範囲の確認>


ポイントスプライトができる「点」の大きさはglGetFloatv()関数で取得できる。

[例]

	GLfloat fSizes[2];
	glGetFloatv(GL_ALIASED_POINT_SIZE_RANGE, fSizes);//ポイントスプライト有効サイズを取得
	std::cout << "Enable Size (Min,Max) = ( " << fSizes[0] << ", " << fSizes[1] << " )\n";

<原点の切り替え>


デフォルトではテクスチャの原点が「左上」である。もし、テクスチャの原点を「左下」にしたい場合は、
glPointParameter()関数を使う。

[例]

glew等でエントリポイントを記述したものとする。
... ...
glPointParameteri(GL_POINT_SPRITE_COORD_ORIGIN, GL_LOWER_LEFT);
... ...


サンプルコード


※このサンプルはOpenGL2.1で動作確認している。バージョンによっては、glext.hが必要。

サンプルコード

目次

― その他 ―

Wiki内検索

計測中...(07.10.8〜)

Save The World






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


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

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