最終更新: mikk_ni3_92 2008年09月08日(月) 17:37:13履歴
現在地 >> メニュー >> 基本編09 >> 頂点配列 >> glDrawRangeElementsによる描画
glDrawRangeElements()関数は、glDrawElements()関数のように使うが、こちらは範囲の指定がある。
例えば、
の場合、
インデックスの最小値=0
インデックスの最大値=7
なので、
※もし、12個ずつ分ければ、
サンプルコード >> 頂点配列::glDrawRangeElements
glDrawRangeElements()関数は、glDrawElements()関数のように使うが、こちらは範囲の指定がある。
glDrawRangeElements(プリミティブの種類、インデックスの最小値、インデックスの最大値、インデックスの数、データ元)範囲を指定する事で、より効率的になる(...はず)
例えば、
// v7----- v6 // /| /| // v3------v2| // | | | | // | |v4-----|-|v5 // |/ |/ // v0------v1 //頂点の配列データ float points[] ={ 0,0,0, //v0 1,0,0, //v1 1,1,0, //v2 0,1,0, //v3 0,0,-1, //v4 1,0,-1, //v5 1,1,-1, //v6 0,1,-1, //v7 }; //頂点番号を知らせる GLubyte index[]={ 0,1,2,3, // 0,4,5,1, //ここ3行は0〜6までのインデックス 1,5,6,2, // 0,3,7,4, // 4,7,6,5, //ここ3行は0〜7のインデックス 3,2,6,7 // }; //インデックスの合計は24
の場合、
インデックスの最小値=0
インデックスの最大値=7
なので、
glDrawRangeElements(GL_QUADS, 0,7,24, GL_UNSIGNED_BYTE, index);となる。
※もし、12個ずつ分ければ、
glDrawRangeElements(GL_QUADS, 0,6,12, GL_UNSIGNED_BYTE, index); glDrawRangeElements(GL_QUADS, 0,7,12, GL_UNSIGNED_BYTE, index+12); //こっちは0〜「7」までと書くことも可能。
サンプルコード >> 頂点配列::glDrawRangeElements