(Mac・iPhone)プリミティブについて
今回はプリミティブについて解説です。OpenGLでプリミティブと言えば点やライン、三角形、四角形、多角形などのことを表します。
OpenGLで使用できるプリミティブには以下のものがあります。
- GL_POINTS
- GL_LINES
- GL_LINE_STRIP
- GL_LINE_LOOP
- GL_TRIANGLES
- GL_TRIANGLE_STRIP
- GL_TRIANGLE_FAN
- GL_QUADS
- GL_QUAD_STRIP
- GL_POLYGON
それでは順番に解説します。緑色で記述してある数字は頂点の指定の順番です。
GL_LINES
2つの頂点を指定して、ラインを描画。2つ目以降のラインもそれぞれ2つの頂点を指定する。
- 最初の1つ→頂点2つを指定(頂点データの0番、1番を使用して描画)
- 2つ目以降→頂点2つを追加で指定(2つ目は頂点データの2番、3番を追加で指定。2番、3番を使用して描画)
GL_LINE_STRIP
2つの頂点を指定して、ラインを描画。2つ目以降のラインは前のラインの最後の頂点を始点とする。
- 最初の1つ→頂点2つを指定(頂点データの0番、1番を使用して描画)
- 2つ目以降→頂点1つを追加で指定(2つ目は頂点データの2番を追加で指定。1番、2番を使用して描画)
GL_LINE_LOOP
基本的には GL_LINE_STRIP と同様の描画を行う。こちらは最初に指定した頂点と最後に指定した頂点を繋ぐラインも描画される。
- 最初の1つ→頂点2つを指定(頂点データの0番、1番を使用。実際には0番→1番→0番のラインが描画される)
- 2つ目以降→頂点1つを追加で指定(2つ目は頂点データの2番を追加で指定。1番、2番を使用して描画。実際には1番→2番→0番のラインが描画される)
GL_TRIANGLES
3つの頂点を指定して、三角形を描画。2つ目以降の三角形もそれぞれ3つの頂点を指定する。
- 最初の1つ→頂点3つを指定(頂点データの0番、1番、2番を使用して描画)
- 2つ目以降→頂点3つを追加で指定(2つ目は頂点データの1番、3番、2番を使用して描画)
GL_TRIANGLE_STRIP
3つの頂点を指定して、三角形を描画。2つ目以降は「1つ前の頂点2つ+新しい頂点1つ」の3つの頂点を使用して描画される。
- 最初の1つ→頂点3つを指定(頂点データの0番、1番、2番を使用して描画)
- 2つ目以降→頂点1つを追加で指定(2つ目は頂点データの3番を追加で指定。3番、2番、1番を使用して描画)
GL_TRIANGLE_FAN
最初に指定した頂点を中心に扇状に三角形を描画。2つ目以降は「1つ前の頂点2つ+新しい頂点1つ」の3つの頂点を使用して描画される。
- 最初の1つ→頂点3つを指定(頂点データの0番、1番、2番を使用して描画)
- 2つ目以降→頂点1つを追加で指定(2つ目は3番を追加で指定。頂点データの0番、2番、3番を使用して描画)
GL_QUADS
4つの頂点を指定して、四角形を描画。2つ目以降の四角形もそれぞれ4つの頂点を指定する。
- 最初の1つ→頂点4つを指定(頂点データの0番、1番、3番、2番を使用して描画)
- 2つ目以降→頂点4つを追加で指定(2つ目は頂点データの5番、4番、2番、3番を使用して描画)
GL_QUAD_STRIP
4つの頂点を指定して、四角形を描画。2つ目以降は「1つ前の頂点2つ+新しい頂点2つ」の4つの頂点を使用して描画される。
- 最初の1つ→頂点4つを指定(頂点データの0番、1番、3番、2番を使用して描画)
- 2つ目以降→頂点2つを追加で指定(2つ目は頂点データの4番、5番を追加で指定。5番、4番、2番、3番を使用して描画)
iPhone(OpenGL ES)でのサポート状況
iPhone(OpenGL ES)でのサポート状況は以下の様になっています。
定数 | 描画内容 | 使用可能か? |
---|---|---|
GL_POINTS | 点 | ○ |
GL_LINES | ライン | ○ |
GL_LINE_STRIP | ライン | ○ |
GL_LINE_LOOP | ライン | ○ |
GL_TRIANGLES | 三角形 | ○ |
GL_TRIANGLE_STRIP | 三角形 | ○ |
GL_TRIANGLE_FAN | 三角形 | ○ |
GL_QUADS | 四角形 | × |
GL_QUAD_STRIP | 四角形 | × |
GL_POLYGON | 多角形 | × |
iPhoneの場合、四角形と多角形のみサポートされない様です。
ということでサンプルコードはMac版だけですこちらからDL下さい。画面をクリックすると頂点を増加、右クリックすると減少します。
iPhone3Dプログラミング講座の一覧はこちら