- 追加された行はこの色です。
- 削除された行はこの色です。
* プログラムライブラリ [#xdec2d85]
#contents
** ロードマップ [#q13ee38b]
-0.1:単純なピクセルフォーマットの対応(RGB、RGBAなど)
-0.2:OpenGL1.0で扱える無圧縮ピクセルフォーマットの全対応
-0.3:S3TCフォーマットの対応(ここまでできたらいいなぁ)
-0.4:RLEフォーマットの対応?
-1.0:ミップマップ対応
** ファイルフォーマット [#mc495ab3]
Ver0.1
|サイズ(bytes)|型|Comment|説明|h
|5|char[5]|"GLPIC"|固定文字列。|
|1|u8|format version info|バージョン情報。|
|1|u8|pixel format|ピクセルフォーマット。|
|1:1|u8|use mip map flag|ミップマップを使うか。|
|1:7|u8|mip map level|ミップマップの最大レベル。|
|2|u16|texture's width(pixel)|テクスチャの横幅。|
|2|u16|texture's height(pixel)|テクスチャの縦幅。|
|2|u16|src image's width(pixel)|イメージ本体の横幅。|
|2|u16|src image's height(pixel)|イメージ本体の縦幅。|
|4|u32|pixel total data size(bytes)|ピクセルデータのデータサイズ。|
|4|u32|user data size(bytes)|ユーザーデータのデータサイズ。|
|4|u32|user data offset(bytes)|pixel dataからuser dataへのオフセット値。|
|4|u32|endian checker(0x12345678)|エンディアンチェック。|
|?|u8|pixel data|ピクセルデータ。|
|?|u8|user data|ユーザーデータ。|
-endian checkerが0x78563412のときは、各データのバイトオーダーを逆にする。
*** 構造体 [#hb718b9a]
#code(c,){{
struct GLPicHeader
{
// 0
char signature[3]; ///< シグネチャ。固定文字列が入る。
unsigned char version; ///< ファイルフォーマットのバージョン情報。
unsigned short endianCheck; ///< エンディアンチェック。固定値が入る。
unsigned char pixelFormat; ///< ピクセルフォーマット。
unsigned char flagAndMipMapLevel; ///< 最上位ビット:イメージは引き延ばされているか。それ以外:ミップマップの最大レベル。
// 8
unsigned short textureWidth; ///< テクスチャの横幅。
unsigned short textureHeight; ///< テクスチャの縦幅。
unsigned short imageWidth; ///< 元のイメージの横幅。
unsigned short imageHeight; ///< 元のイメージの縦幅。
// 16
unsigned long pixelDataOffset; ///< ヘッダの先頭からpixelDataへのオフセット値
unsigned long pixelDataSize; ///< ピクセルのデータサイズ。
// 24
unsigned long userDataOffset; ///< ヘッダの先頭からuserDataへのオフセット値。
unsigned long userDataSize; ///< ユーザーデータのサイズ。
};
}}
-endian checkerが0x3412のときは、各データのバイトオーダーを逆にする。
-user dataが存在しないときは、user data sizeおよびuser data offsetは0。
*** ピクセルデータ [#be02b550]
:GLPicHeader_GetImageScaled == GLPicBool_True|
画像はテクスチャいっぱいにスケールされている。
:GLPicHeader_GetImageScaled == GLPicBool_False|
画像は左上に格納され、右および下の余白には0データが格納されている。
** ライブラリ [#fb1b2a58]
作成すらしていない