現在地: メニュー >> 発展編01 >> 発展編01::テクスチャ圧縮

テクスチャ圧縮


テクスチャ圧縮によってメモリの使用量を落とし、
より多くのテクスチャをロードしたり、パフォーマンスを上げる事ができる(はず)。

使い方


「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を返す

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次第


サンプルコード

目次

― その他 ―

Wiki内検索

計測中...(07.10.8〜)

Save The World






▲よろしければ広告のクリックもお願いします


▲ランキングに参加しました

管理人/副管理人のみ編集できます