[C++&OpenGL]頂点配列と頂点インデックスの併用によるテクスチャの描画について
Posted: 2018年5月28日(月) 03:47
C++とOpenGL(freeglut)を用いて3Dモデルを描画し、アニメーション等の制御を考えています。
私自身の従来の方法では、glVertexPointer()やglTexCoordPointer()を用いて頂点座標配列とテクスチャ座標配列の頂点配列を定義してから、glDrawArrays()を用いてポリゴンとそれに追従するテクスチャを描画してきましたが、毎フレームごとの頂点変形処理を考えると少し負荷が大きいと思います。
そこで、glDrawElements()を用いて頂点インデックスで描画をすることを考え、ポリゴンのみの描画時には実装に成功しました。
しかし、ポリゴンにテクスチャを張り付けることを考えると、頂点座標配列とテクスチャ座標配列はインデックスの対応の仕方が違うためglDrawElements()では描画ができないと思います。特にテクスチャ座標配列は基本的に頂点の共有がないため、インデックスとして扱うと余計に負荷がかかるかと思います。
そこでですが、頂点座標配列を頂点インデックスとして、テクスチャ座標配列を頂点配列として描画する方法はありますか?
言葉にすると複雑なため関数を用いてあらわすと、glVertexPointer()で定義されたものはglDrawElements()のような、glTexCoordPointer()で定義されたものはglDrawArrays()のような頂点の選択方法によって描画をするということです。
私の無知なだけかもしれませんが、よろしくお願いします。
私自身の従来の方法では、glVertexPointer()やglTexCoordPointer()を用いて頂点座標配列とテクスチャ座標配列の頂点配列を定義してから、glDrawArrays()を用いてポリゴンとそれに追従するテクスチャを描画してきましたが、毎フレームごとの頂点変形処理を考えると少し負荷が大きいと思います。
そこで、glDrawElements()を用いて頂点インデックスで描画をすることを考え、ポリゴンのみの描画時には実装に成功しました。
しかし、ポリゴンにテクスチャを張り付けることを考えると、頂点座標配列とテクスチャ座標配列はインデックスの対応の仕方が違うためglDrawElements()では描画ができないと思います。特にテクスチャ座標配列は基本的に頂点の共有がないため、インデックスとして扱うと余計に負荷がかかるかと思います。
そこでですが、頂点座標配列を頂点インデックスとして、テクスチャ座標配列を頂点配列として描画する方法はありますか?
言葉にすると複雑なため関数を用いてあらわすと、glVertexPointer()で定義されたものはglDrawElements()のような、glTexCoordPointer()で定義されたものはglDrawArrays()のような頂点の選択方法によって描画をするということです。
私の無知なだけかもしれませんが、よろしくお願いします。