OpenGLESで2Dを描く
色々触っていてそろそろ何か自分で画面に出してみようかなと思い
2D系の画像を出して見ることに
OpenGLもDirectXと同じくプリミティブを表示するような関数があるので
そいつを使っていざ四角形を画面に出してみよう〜!
とやってみたわいいものの
glDrawElementsのGL_TRIANGLE_STRIPでは表示できるのに、
GL_TRIANGLESではなぜか画面に表示されない事態に陥りました。
理由は色々あったのですが(ほんと色々と知らないこといっぱいでs)
とりあえず
glDrawElementsの第一引数のプリミティブの書き方の指定が
OpenGLESだと普通のOpenGLよりもけっこう削られているらしく
参考にしようとした物とかもエラーになったりしました。
なので一番基本っぽい
TRIANGLESでなんとか画面に出るように試行錯誤・・・
普通に
glGenBuffersで作ったバッファオブジェクトに
頂点情報とインデックス情報を与えて描画しようとしたのですが、
これだと何も表示されない
もしくは三角形の欠けた状態しか画面に出ませんでした><
これはデータの切れ目を指定していなかったのが原因らしく
それを直すと上手くいきました。
指定は
glEnableVertexAttribArray( 番号 );
上記でAttributeの位置を決めて
glVertexAttribPointer( 番号, ....);
でその番号のデータオフセットなどを指定するようです。
これでバッファデータ分のオフセット値(頂点座標、UV座標、頂点カラー)を指定してあげて
再度glDrawElementsで描画!!!
しかしエラー落ちはなくなった物のまだなんか欠けてる・・・
こんな状態がDirectXの時もあったのですが、
今回も原因は同じで
インデックスバッファのインデックスの並び順が右回りになるように指定してあげないとOpenGLさんでも三角形が表示されないようです(当たり前かもしれませんが><)。
こんなチンぼけかましつつ
そこも修正したら見事に画面に四角形のポリゴンが無事に表示されましたwwひゃっほ〜い
ちょっとこの後はコイツを改造して色々とスプライトで遊んでみようかなと考えています。