OpenGL」カテゴリーアーカイブ

OpenGL VAO と VBO

もし検索で来たひとがいたらすんませんここにはあんま有益な情報はありません。

ホイール欲しい ハンドル欲しい OpenGL ES 3.0 / OpenGL 4.3 VertexArrayObject と VertexAttribBinding
こちらのブログが大変参考になりました。本家サイトの VertexSpecification と睨めっこしつつ。

VAOの中に何が格納されるのか。そんで何が格納されないのか。
OpenGLの「バインドしてなんちゃらする」の方式はそのバインドが何に及ぶのかが大変判りづらい。
GL_ARRAY_BUFFERとGL_ELEMENT_ARRAY_BUFFERのバインドの影響範囲の違いとかもうね。

仕様書を隅々まで読めってハナシではあるんですが、作用する範囲がコードからまるで見えてこないというのはどう考えても良い設計ではない。一度後方互換ばしっと切っちゃったんだからこのバインド形式ももっとマシな別のものにできんかったのかのう。。。。。

iPhoneのOpenGL ESでステンシルバッファ使えるよ!( ゚∀゚)

使えるったら使えるよ!!( ゚∀゚)

“iPhone ステンシルバッファ” でググると「ステンシルバッファはない」とか「iPhoneでは使えない」とかいうサイトが上位にヒットしますが、使えます。

実は使えます。

使えるんです!!!!!!!!!

公式ガイド「iOS OpenGL ESプログラミングガイド」にもステンシルステンシル書いてあるじゃないですか。
よく読んでみよう。

iOS 4.0以降では、独立したステンシルバッファはサポートされていません。結合された深度/ステンシルバッファを使用します。

とある。
4.0以降、一般的なステンシルバッファ GL_STENCIL_INDEX8 が使えないようです。

じゃあ4.0以降の「結合された深度/ステンシルバッファ」ってどう使うんだよっ! てのは以下の通り。

ひとつのレンダーバッファをGL_DEPTH_ATTACHMENTとGL_STENCIL_ATTACHMENTで2度フレームバッファに登録するのがポイント。

-layoutSubviewsの中なんかに書くバッファの構築部分は、

みたいなカンジで、バッファのタイプにGL_DEPTH24_STENCIL8_OESを指定。
(GL_STENCIL_INDEX8ではなく)

後は glEnable(GL_STENCIL_TEST) してフツーにステンシル使えます。ぐらっちぇ。

俺はステンシルバッファだけ使いたいんだよ! デプスバッファなんか要らねーー!!!!
って場合はglFramebufferRenderbufferGL_STENCIL_ATTACHMENTだけすればOK。
(8bitのステンシルのために32bitのバッファが作られちゃうことには変わりないが)