ポリゴンの点描


塗りつぶしアイコン

通常、ポリゴンの塗りつぶしは全体を固定して塗りつぶしますが
破線を描画したように、ビット配列をパターンとした点描処理で塗りつぶすことも可能です

ビット配列は縦横 32 ビット、128 バイトの配列で構成されます
やはり、ビットが 1 であればピクセルが描画され、0 であれば描画されません
この縦横32ビットのアイコンを繰り返してポリゴンが塗りつぶされます

ポリゴンの点描を有効化するには、GL_POLYGON_STIPPLE を有効化する必要があります
パターン配列は glPolygonStipple() 関数で設定することができます

void glPolygonStipple(const GLubyte *mask);

mask には、点描パターンを表す128バイトの配列へのポインタを指定します
#include <windows.h>
#include <GL/gl.h>
#include <GL/glut.h>

GLubyte mask[128];

void disp( void ) {
	glClear(GL_COLOR_BUFFER_BIT);

	glEnable(GL_POLYGON_STIPPLE);
	glPolygonStipple(mask);

	glBegin(GL_POLYGON);
		glVertex2f(0 , -0.9);
		glVertex2f(-0.9 , 0.9);
		glVertex2f(0.9 , 0.9);
	glEnd();	

	glFlush();
}

int main(int argc , char ** argv) {
	int iCount;
	for(iCount = 0 ; iCount < 128 ; iCount++) mask[iCount] = 0xF0;

	glutInit(&argc , argv);
	glutInitWindowPosition(100 , 50);
	glutInitWindowSize(400 , 300);
	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);

	glutCreateWindow("Kitty on your lap");
	glutDisplayFunc(disp);

	glutMainLoop();
	return 0;
}


このプログラムでは、単純に 0xF0 を繰り返す配列をパターンとして選択しています
その結果、上の図のような縦じまの模様でポリゴンが塗りつぶされました



前のページへ戻る次のページへ