強火で進め

このブログではプログラム関連の記事を中心に書いてます。

(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_POINTS

点を描画。

  • 最初の1つ→頂点1つを指定(頂点データの0番を使用して描画)
  • 2つ目以降→頂点1つを追加で指定(2つ目は頂点データの1番を使用して描画)


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番を使用して描画)


GL_POLYGON

指定した頂点を繋いだ多角形を描画。

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プログラミング講座の一覧はこちら