GLUBUILD1DMIPMAPS
Section: Misc. Reference Manual Pages (3G)
索引
xjman
名前
gluBuild1DMipmaps
- 1 次元のミップマップを作る
書式
GLint gluBuild1DMipmaps(
GLenum target,
GLint internalFormat,
GLsizei width,
GLenum format,
GLenum type,
const void *data )
delim $$
引き数
- target
-
対象のテクスチャを指定する。
GL_TEXTURE_1D でなければならない。
- internalFormat
-
テクスチャイメージの内部格納領域を要求する。
SGI による最新バージョンの GLU の実装では、GLU から呼び出される OpenGL
の実装にこの値を渡す前に値の正しさのチェックは行われない。
OpenGL の実装が受け付けない値は、OpenGL のエラーとなる。
GLU のレベルで値のチェックをしないことの利点は、GLU の実装のリビジョン
を取得しなくても OpenGL の機能拡張としてテクスチャの新しい
内部フォーマットを追加できることである。
古い GLU の実装はこの値をチェックし、値が 1, 2, 3, 4 または以下に示す
シンボル定数でない場合にエラーとなる:
GL_ALPHA,
GL_ALPHA4,
GL_ALPHA8,
GL_ALPHA12,
GL_ALPHA16,
GL_LUMINANCE,
GL_LUMINANCE4,
GL_LUMINANCE8,
GL_LUMINANCE12,
GL_LUMINANCE16,
GL_LUMINANCE_ALPHA,
GL_LUMINANCE4_ALPHA4,
GL_LUMINANCE6_ALPHA2,
GL_LUMINANCE8_ALPHA8,
GL_LUMINANCE12_ALPHA4,
GL_LUMINANCE12_ALPHA12,
GL_LUMINANCE16_ALPHA16,
GL_INTENSITY,
GL_INTENSITY4,
GL_INTENSITY8,
GL_INTENSITY12,
GL_INTENSITY16,
GL_RGB,
GL_R3_G3_B2,
GL_RGB4,
GL_RGB5,
GL_RGB8,
GL_RGB10,
GL_RGB12,
GL_RGB16,
GL_RGBA,
GL_RGBA2,
GL_RGBA4,
GL_RGB5_A1,
GL_RGBA8,
GL_RGB10_A2,
GL_RGBA12,
GL_RGBA16。
- width
-
テクスチャイメージの幅をピクセル単位で指定する。
- format
-
ピクセルデータのフォーマットを指定する。
フォーマットは以下のいずれかでなければならない:
GL_COLOR_INDEX,
GL_DEPTH_COMPONENT,
GL_RED,
GL_GREEN,
GL_BLUE,
GL_ALPHA,
GL_RGB,
GL_RGBA,
GL_BGR,
GL_BGRA,
GL_LUMINANCE,
GL_LUMINANCE_ALPHA。
- type
-
data のデータ型を指定する。
データ型は以下のいずれかでなければならない:
GL_UNSIGNED_BYTE,
GL_BYTE,
GL_BITMAP,
GL_UNSIGNED_SHORT,
GL_SHORT,
GL_UNSIGNED_INT,
GL_INT,
GL_FLOAT,
GL_UNSIGNED_BYTE_3_3_2,
GL_UNSIGNED_BYTE_2_3_3_REV,
GL_UNSIGNED_SHORT_5_6_5,
GL_UNSIGNED_SHORT_5_6_5_REV,
GL_UNSIGNED_SHORT_4_4_4_4,
GL_UNSIGNED_SHORT_4_4_4_4_REV,
GL_UNSIGNED_SHORT_5_5_5_1,
GL_UNSIGNED_SHORT_1_5_5_5_REV,
GL_UNSIGNED_INT_8_8_8_8,
GL_UNSIGNED_INT_8_8_8_8_REV,
GL_UNSIGNED_INT_10_10_10_2,
GL_UNSIGNED_INT_2_10_10_10_REV。
- data
-
メモリ上のイメージデータを指すポインタを指定する。
説明
gluBuild1DMipmaps はミップマップと呼ばれる、フィルタ処理された
1 次元のテクスチャマップを解像度を下げながら並べたものを作る。
ミップマップはテクスチャマッピング処理をしたプリミティブの
アンチエイリアス処理に使われる。
返り値は 0 ならば成功を表す。
それ以外の返り値は GLU のエラーコードである(gluErrorString を
参照)。
まず、データ(data)の幅(width)が 2 のべき乗であるかどうかが
チェックされる。
べき乗でない場合は、data のコピーが拡大または縮小され、
幅が最も近い 2 のべき乗になるように調整される。
(width がふたつのべき乗値のちょうど中間だった場合は、
data のコピーは拡大される。)
このコピーが後述のミップマップ操作で使われる。
例えば width が 57 ならば、data のコピーは
ミップマップ処理の前に幅 64 に拡大される。
次にプロキシテクスチャ(glTexImage1D を参照)を使って、
要求されたテクスチャを OpenGL の実装が当てはめられるかどうかが調べられる。
当てはめられなければ、当てはめられるようになるまで、width を半分
にする処理が繰り返される。
次に、data のコピーを半分の大きさに簡略化する処理を
サイズが $1 ~times~ 1$ になるまで繰り返すことにより、
ミップマップレベルの列が作られる。
それぞれのレベルでは、半分になったミップマップレベルに含まれる
各テクセル値は、大きいミップマップレベル内でこれに対応するふたつの
テクセル値の平均値となる。
glTexImage1D はこれらのミップマップレベルを個別にロードするため
に使われる。
レベル 0 は data のコピーである。
もっとも大きなレベルは ${log sub 2}(width)$ である。
例えば、width が 64 であり、OpenGL の実装がこのサイズのテクスチャを
格納できる場合には、次のミップマップレベルが作られる:
$64 ~times~ 1$, $32 ~times~ 1$, $16 ~times~ 1$, $8 ~times~ 1$
$4 ~times~ 1$, $2 ~times~ 1$, $1 ~times~ 1$。
これらは順にレベル 0 から 6 に対応する。
type 引き数に指定できる値の説明については、glTexImage1D の
項目を参照すること。
data 引き数に指定できる値の説明については、glDrawPixels の
項目を参照すること。
注意
最大レベルを直接問い合わせる手段はない点に注意すること。
最大レベルは glGetTexLevelParameter を使って間接的に求められる。
最初にレベル 0 で実際に使われている幅を求める。
(この幅は width と違うことがある。プロキシテクスチャは
OpenGL の実装に合うように拡大・縮小されるかもしれないからである。)
すると最大レベルは公式 ${log sub 2}(width)$ で計算できる。
フォーマット GL_BGR および GL_BGRA、
型 GL_UNSIGNED_BYTE_3_3_2,
GL_UNSIGNED_BYTE_2_3_3_REV,
GL_UNSIGNED_SHORT_5_6_5,
GL_UNSIGNED_SHORT_5_6_5_REV,
GL_UNSIGNED_SHORT_4_4_4_4,
GL_UNSIGNED_SHORT_4_4_4_4_REV,
GL_UNSIGNED_SHORT_5_5_5_1,
GL_UNSIGNED_SHORT_1_5_5_5_REV,
GL_UNSIGNED_INT_8_8_8_8,
GL_UNSIGNED_INT_8_8_8_8_REV,
GL_UNSIGNED_INT_10_10_10_2,
GL_UNSIGNED_INT_2_10_10_10_REV
が使えるのは GL のバージョン 1.2 以降および GLU のバージョン 1.3 以降
だけである。
エラー
width が 1 未満ならば GLU_INVALID_VALUE が返される。
format または type が不正な場合には
GLU_INVALID_ENUM が返される。
type が GL_UNSIGNED_BYTE_3_3_2 または
GL_UNSIGNED_BYTE_2_3_3_REV であり、かつ
format が GL_RGB でない場合には
GLU_INVALID_OPERATION が返される。
type が GL_UNSIGNED_SHORT_5_6_5 または
GL_UNSIGNED_SHORT_5_6_5_REV であり、かつ
format が GL_RGB でない場合には
GLU_INVALID_OPERATION が返される。
type が GL_UNSIGNED_SHORT_4_4_4_4 または
GL_UNSIGNED_SHORT_4_4_4_4_REV であり、かつ
format が GL_RGBA と GL_BGRA のいずれでもない
場合には GLU_INVALID_OPERATION が返される。
type が GL_UNSIGNED_SHORT_5_5_5_1 または
GL_UNSIGNED_SHORT_1_5_5_5_REV であり、かつ
format が GL_RGBA と GL_BGRA のいずれでもない
場合には GLU_INVALID_OPERATION が返される。
type が GL_UNSIGNED_INT_8_8_8_8 または
GL_UNSIGNED_INT_8_8_8_8_REV であり、かつ
format が GL_RGBA と GL_BGRA のいずれでもない
場合は GLU_INVALID_OPERATION が返される。
type が GL_UNSIGNED_INT_10_10_10_2 または
GL_UNSIGNED_INT_2_10_10_10_REV であり、かつ
format が GL_RGBA と GL_BGRA のいずれでもない
場合には GLU_INVALID_OPERATION が返される。
関連項目
glDrawPixels(3G),
glTexImage1D(3G),
glTexImage2D(3G),
glTexImage3D(3G),
gluBuild2DMipmaps(3G),
gluBuild3DMipmaps(3G),
gluErrorString(3G),
glGetTexImage(3G),
glGetTexLevelParameter(3G),
gluBuild1DMipmapLevels(3G),
gluBuild2DMipmapLevels(3G),
gluBuild3DMipmapLevels(3G)
Index
- 名前
-
- 書式
-
- 引き数
-
- 説明
-
- 注意
-
- エラー
-
- 関連項目
-
Time: 07:01:12 GMT, January 12, 2009