OpneGL ESのテクスチャについてまとめる

まずはiPhoneでシューティングゲームを作ることにする。そのためのOpenGLの修行に入る

OpenGL ESのテクスチャ作成の流れ(流れ順:順不同のものもあり

1:テクスチャオブジェクトの作成
  glGenTexture(1, textures)
  
  テクスチャオブジェクトを作成するためのユニークIDを作成する。第2引数に(texturesはGLuint型の配列)
  弟1引数で指定した数ぶんのユニークなID値が格納される


  ここで例えばこの場合は、
  int texture_id = textures[0]; としてIDを取っておく。


2:作成したテクスチャオブジェクトを有効化する
  glBindTexture(GL_TEXTURE2D, texture_id)

  弟2引数に対応したテクスチャオブジェクトを有効化する。
  はじめて使用されたIDは自動的にテクスチャオブジェクトが作られる

  弟1匹数のGL_TEXTURE2Dを指定しているので、ここでは2Dテクスチャとなる

3:バインドされているテクスチャオブジェクトに対し、2D画像を割り当てる
  glTeximage2D(GLenum target(ここではGL_TEXTURE2D), GLint level, GLint internalFormat,
          GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type,
          const GLvoid *pixels)

  メモリ上の2次元画像をテクスチャに割り当てる。targetはGL_TEXTURE_2Dを指定、levelにはMIP
 MAPを行う場合のテクスチャの解像度レベルを指定

  *MIPMAPってなんだったっけ?

  回答;Mipmapとは物体からの距離に応じてテクスチャを切り替えるために、距離に応じたそれぞれの
     テクスチャを用意し、切り替えるという機能です
     これによって、画面クオリティの変化、ビデオメモリーの消費量、処理の快適具合が変化します
     MipMapを使用することによって快適になることがあるようです

  internalFormatはOpenGLの内部でどのように保持するのかを指定。GL_RGBならRGB形式となり、
  全部で38種類もあるみたい
  borderは境界線の太さ、0なら付かない。 formatはpixelsに指定したメモリ上の形式。
  pixelsはテクスチャの画像を格納したメモリ(配列)のポインタを指定


参考になったサイト:iPhone で OpenGL のテクスチャ用に PNG 画像を読み込む

テクスチャ画像と頂点の対応について
OpenGL関連の書籍を書いている先生の研究室から良い画像を見つけたので貼らせて頂く

$本物のエンジニアになるために