最終更新: mikk_ni3_92 2009年02月04日(水) 16:14:50履歴
現在地: メニュー >> 発展編01 >> 発展編01::テクスチャ圧縮
「glTexImage()関数」の引数の「internalFormat」部分に設定すればよい。
[例]
以下のようなものが指定できる。
圧縮が成功したかどうかの確認は、「glGetTexLevelParameteriv()関数」を使う。
[例]
この関数によって、以下のような事を知ることができる。
テクスチャ圧縮を行うと、OpenGLが適切だと思う圧縮フォーマットを選択する。
この時、「hint」を使う事で、OpenGLが速度重視か、それとも品質重視かなどを設定できる。
サンプルコード
「glTexImage()関数」の引数の「internalFormat」部分に設定すればよい。
[例]
glTexImage2D(GL_TEXTURE_2D,0,GL_COMPRESSED_RGB, image1->width,image1->height,0,
GL_BGR,GL_UNSIGNED_BYTE,image1->imageData);
以下のようなものが指定できる。
- GL_COMPRESSED_ALPHA
- GL_COMPRESSED_LUMINANCE
- GL_COMPRESSED_LUMINANCE_ALPHA
- GL_COMPRESSED_INTENSITY
- GL_COMPRESSED_RGB
- GL_COMPRESSED_RGBA
圧縮が成功したかどうかの確認は、「glGetTexLevelParameteriv()関数」を使う。
[例]
//圧縮されたかどうか?のチェック int Flag; glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_COMPRESSED, &Flag); if( Flag == 1 ){ std::cout << "compressed!\n"; } else{ std::cout << "uncompressed!\n"; }
この関数によって、以下のような事を知ることができる。
トークン | 返り値など |
GL_TEXTURE_COMPRESSED | 「1」ならば圧縮できている |
GL_TEXTURE_COMPRESSED_IMAGE_SIZE | 圧縮テクスチャのバイト数 |
GL_TEXTURE_INTERNAL_FORMAT | 圧縮に使われたフォーマット |
GL_NUM_COMPRESSED_TEXTURE_FORMATS | サポートしている圧縮テクスチャフォーマットの数 |
GL_COMPRESSED_TEXTURE_FORMATS | サポートする圧縮テクスチャと一致する定数値の配列を返す |
GL_TEXTURE_COMPRESSION_HINT | テクスチャ圧縮に関するhintを返す |
テクスチャ圧縮を行うと、OpenGLが適切だと思う圧縮フォーマットを選択する。
この時、「hint」を使う事で、OpenGLが速度重視か、それとも品質重視かなどを設定できる。
- glHint(GL_TEXTURE_COMPRESSION_HINT, GL_FASTEST); → 速度重視
- glHint(GL_TEXTURE_COMPRESSION_HINT, GL_NICEST); → 品質重視
- glHint(GL_TEXTURE_COMPRESSION_HINT, GL_DONT_CARE); → OpenGL次第
サンプルコード