メモ帳ブログ @ wiki
テクスチャ
最終更新:
nina_a
-
view
テクスチャ
テクスチャに名前をつける
OpenGLではテクスチャに対し、正の整数の名前をつける。名前は勝手につけても良い(?)が重複があるとまずいので、普通、glGenTextures()関数を使う。また、テクスチャ名が使用中かどうかはglIsTexture(GLuint textureName);を使う。
- void glGenTextures(GLsizei n, GLuint *textureNames);
- n個のテクスチャオブジェクト用の名前をtextureNames配列にセットする。
- GLboolean glIsTexture(GLuint textureName);
- テクスチャが使用されているかどうか調べる。glGenTextures関数によって予約された名前でも、実際にバインドされていない場合にはGL_FALSEが返される。|
テクスチャを作成(バインド)する
テクスチャを作成するにはglBindTexture関数を用いる。また、すでに用意されたテクスチャを有効にするにもこの関数を用いる。
- void glBindTexture(GLenum target, GLuint textureName);
- textureNameを有効にする。
- 引数targetは、使用するテクスチャの種類により、以下の定数のいずれかを取る。
GL_TEXTURE_2D, GL_PROXY_TEXTURE_2D, GL_TEXTURE_CUBE_MAP_POSITIVE_X, GL_TEXTURE_CUBEMAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBEMAP_NEGATIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z, GL_TEXTURE_CUBEMAP_NEGATIVE_Z, GL_TEXTURE_CUBE_MAP
テクスチャを指定する
- void glTexImage2D(GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* texels);
- テクスチャに用いる画像が格納されているアドレスを指定する。各引数の説明については以下の通り。
引数 意味 GLenum target glBindTexturesのtargetと同じ。 GLint level OpenGL/ミップマップのレベル。ミップマップを使用しない場合0。 GLint internalFormat 内部で使用するテクスチャのフォーマットを指定する。
厳密にこれに従うわけではないらしい。GLsizei width テクスチャの幅。 GLsizei height テクスチャの高さ。 GLint border 境界が有り(1)か無し(0)か。 GLenum format texelsのフォーマット GLenum type texelsで使用している型 const GLvoid* texels テクスチャへのポインタ
テクスチャのパラメータの指定
テクスチャのパラメータを指定するにはglTexParameter*関数を用いる。パラメータによって渡す引数の型が異なるため、以下の4種類の関数が用意されている。以下の4つの関数をまとめてglTexParaneter*関数と記述する。
| void glTexParameteri(GLenum target, GLenum pname, GLint param); |
| void glTexParameterf(GLenum target, GLenum pname, GLfloat param); |
| void glTexParameteriv(GLenum target, GLenum pname, GLint* param); |
| void glTexParameterfv(GLenum target, GLenum pname, GLfloat* param); |
パラメータの種類
| パラメータ | 説明 |
| GL_TEXTURE_WRAP_S | テクスチャ座標系における各軸方向の繰り返し方法指定。 |
| GL_TEXTURE_WRAP_T | |
| GL_TEXTURE_WRAP_R | |
| GL_TEXTURE_MAG_FILTER | 拡大・縮小方法の指定。 |
| GL_TEXTURE_MIN_FILTER | |
| GL_TEXTURE_BORDER_COLOR | ボーダー色の指定。 |
| GL_TEXTURE_PRIORITY | ? |
| GL_TEXTURE_MIN_LOD | ミップマップの縮小・拡大に利用するスケール係数の最小値と最大値を指定する。 |
| GL_TEXTURE_MAX_LOD | |
| GL_TEXTURE_BASE_LEVEL | もっとも解像度の高いミップマップのレベル |
| GL_TEXTURE_MAX_LEVEL | もっとも解像度の低いミップマップのレベル |
| GL_TEXTURE_LOD_BIAS | ? |
| GL_DEPTH_TEXTURE_MODE | ? |
| GL_TEXTURE_COMPARE_MODE | 比較方法? |
| GL_TEXTURE_COMPARE_FUNC | 比較関数? |
| GL_GENERATE_BITMAP | ? |
折り返し方法の指定
GL_TEXTURE_WRAP_*はテクスチャ座標系における各軸方向の折り返し方法を指定する。
カテゴリ:OpenGL
