レンダリングされるオブジェクトの点のサイズを設定するには、Point Sizeコマンドを使います。
Point Size (n)
nはピクセル数です。このピクセル数は、アンチエイリアシングやハードウェア構成などの他の設定によっては、レンダリングされる実際のピクセル数と異なる場合があります。
線の幅は、Line Widthコマンドを使って設定します。
Line Width(n)
nはピクセル数です。引数nはゼロより大きい必要があり、デフォルトは1です。
点描される線を作成するには、Line Stippleコマンドを使います。
Line Stipple(factor, pattern)
点描パターンを作成するには、目的の点描パターンを表す16ビットのバイナリ数を書き込みます。パターンは右から左に読まれるので、表記がレンダリング方向とは逆に見えてしまうことがあります。バイナリ数を整数に変換し、それをpattern引数として使います。
たとえば、パターン0000000011111111の点線を描きたいとします。このバイナリ数は10進表記では255なので、Line Stipple(1, 255)と指定します。
factor引数は、各バイナリ桁を2倍に引き伸ばして2桁にします。この例では、Line Stipple(2,255)は00000000000000001111111111111111になります。
次の例のスクリプトは、それぞれ幅(Line Widthコマンド)と点描パターンが異なる3本の線を描きます。
scene = Scene Box( 200, 200 ); // OpenGLシーンを保持するScene Boxを作成する
New Window( "Stipples", scene ); // シーンをウィンドウに配置する
scene << Ortho( -2, 2, -2, 2, -1, 1 );
scene << Color( 0, 0, 0 ); // テキストのRGB色を設定する
scene << Enable( LINE_STIPPLE );
scene << Line Width( 2 );
scene << Line Stipple( 1, 255 );
scene << Begin( LINES );
scene << Vertex( -2, -1, 0 );
scene << Vertex( 2, -1, 0 );
scene << End();
scene << Line Width( 4 );
scene << Line Stipple( 1, 32767 );
scene << Begin( LINES );
scene << Vertex( -2, 0, 0 );
scene << Vertex( 2, 0, 0 );
scene << End();
scene << Line Width( 6 );
scene << Line Stipple( 3, 51 );
scene << Begin( LINES );
scene << Vertex( -2, 1, 0 );
scene << Vertex( 2, 1, 0 );
scene << End();
scene << Update;
図13.11 点描
多角形の描画モードを設定するには、Polygon Modeコマンドを使います。
Polygon Mode (face, mode)
図13.12 点、線、塗りつぶし
次表のスクリプトは、三角形を定義する表示リストを作成します。表示リストにおいて、Translate、Rotate、およびColorと組み合わせて3回使用し、3角形を3つの位置に描きます。また、Polygon Modeコマンドによって、各三角形の描画モードを変更しています。塗りつぶし(FILL)モードはデフォルトなので、明示的に呼び出していないことに注意してください。
shape = Scene Display List();
|
|
shape << Begin(TRIANGLES);
shape << End();
|
三角形の頂点を保持する「shape」という名前の表示リストを作成する。この例は2次元上に描画するので、頂点のz座標はすべてゼロに設定します。
|
scene << Call List(shape);
scene << Update;
// シーンを更新して三角形を確認する
|
|
scene << Polygon Mode(FRONT_AND_BACK, LINE);
scene << Call List(shape);
scene << Update;
// シーンを更新して三角形を確認する
|
|
scene << Polygon Mode(FRONT_AND_BACK, POINT);
scene << Call List(shape);
scene << Update;
// シーンを更新して三角形を確認する
|
塗りつぶした多角形に対して、境界線を描くには、一度、塗りつぶした多角形を描いた後、それに線を重ねて描く必要があります。ただし、レンダリング方法によっては、思ったように線が描画されないことがあります。Polygon Offsetコマンドを使うと、この「縫い合わせ」問題を解決できます。
Polygon Offset (factor, units)
オフセットを有効にするには、目的のモードに合わせて、Enable(POLYGON_OFFSET_FILL)、Enable(POLYGON_OFFSET_LINE)、またはEnable(POLYGON_OFFSET_POINT)を使います。実際のオフセット値は、m*(factor)+r*(units)で計算されます。mは多角形の深度の最大勾配、rはウィンドウ座標の深度値で解像可能な差を生成するのに必要な最小値です。必要に応じて、Polygon Offset(1,1)から始めてください。
Polygon Offsetは、「曲面プロット」プラットフォームでも内部的に使われています。曲面とメッシュまたは曲面と等高線を重ねて表示するときにPolygon Offsetを使っています。なぜなら、線を視点の方に近づけるか、曲面を視点から遠ざけるかしないと、曲面によって線の一部が隠されてしまうからです。