ポリゴンの点描
塗りつぶしアイコン
通常、ポリゴンの塗りつぶしは全体を固定して塗りつぶしますが
破線を描画したように、ビット配列をパターンとした点描処理で塗りつぶすことも可能です
ビット配列は縦横 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 を繰り返す配列をパターンとして選択しています
その結果、上の図のような縦じまの模様でポリゴンが塗りつぶされました