最終更新:
mikk_ni3_92 2009年10月30日(金) 17:08:59履歴
現在地 >> メニュー >> 基本編06 >> png形式の画像
glpngは2000年にリリースされた後に、メンテナンスがされていない模様で、
VS2005やVS2008では
そこで、VS2005や、VS2008でライブラリを再ビルドして「glpng.lib」、「glpngd.lib」を作成する必要がある。
ダウンロードした「glpng\src」フォルダ内
[ソースファイル]→[右クリック]→[追加]→[既存の項目]で先ほどコピーしたファイルを全て追加。
次に
[プロジェクト]→[プロパティ]→...から
左上の構成がDebugである事を確認して「出力ファイル」部分を
「$(OutDir)\$(ProjectName).lib」
から
「$(OutDir)\$(ProjectName)d.lib」
に書き換える

▲Debug構成でやる設定
また、「Release構成」の設定で、
[プロジェクト]→[プロパティ]→...から[デバッグ情報の形式]を「無効」にする。

▲Release構成でやる設定
※これをやらないと、「Releaseモード」で「libファイル」を使った時に、
「デバッグ情報がないものとして、オブジェクトにリンクします」
のような警告がでるようだ。
【メモ】
もし作成した「glpng」プロジェクトを削除してしまう場合は、
「Debug構成」の方の「デバッグ情報の形式」を「C7 互換 /Z7」にする必要がある。
※プロジェクトを削除すると「glpng(d).lib」に書き込まれた「pdbファイル」の所在(パス)が無効になるため
あとは、[ビルド]→[バッチビルド]→[すべて選択]クリック後
[ビルド]をクリックすればよい。
すると、「Releaseフォルダ」「Debugフォルダ」が作成され、
それぞれの中に「glpng.lib」と「glpngd.lib」ができている。
「glpng.lib」と「glpngd.lib」を「glut32.lib」と同じ場所に配置する。
例えば「VS2008 Express SP1」の場合は「C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib」になるはず
ヘッダをインクルードするのみで使用可能。
※内部で「#pragma命令」をしている
この場合、
ミップマップなし、α値なし、繰り返し方法が「GL_CLAMP」で、拡大・縮小のフィルタが「GL_NEAREST」
のテクスチャができる。
「glpng.h」を「glut.h」より先にインクルードすると、「#defineマクロ」に関する警告が出る。
「#defineマクロの再定義」に関するものだが、同じマクロの定義をしているのだけなのでたぶん問題ない。
警告が気になる場合は、「glpng.h」を「glut.h」の後にインクルードする。
詳しい使い方は
ダウンロードしたフォルダ内にある「glpng.htm」に書いてある。
glpngは2000年にリリースされた後に、メンテナンスがされていない模様で、
VS2005やVS2008では
- 「ファイル LIBC.lib を開くことができません」
- 「外部シンボル "__iob" は未解決です」
そこで、VS2005や、VS2008でライブラリを再ビルドして「glpng.lib」、「glpngd.lib」を作成する必要がある。
ダウンロードした「glpng\src」フォルダ内
- glpng.c
- zlibフォルダ内のファイル
- pngフォルダ内のファイル
[ソースファイル]→[右クリック]→[追加]→[既存の項目]で先ほどコピーしたファイルを全て追加。
次に
[プロジェクト]→[プロパティ]→...から
左上の構成がDebugである事を確認して「出力ファイル」部分を
「$(OutDir)\$(ProjectName).lib」
から
「$(OutDir)\$(ProjectName)d.lib」
に書き換える

▲Debug構成でやる設定
また、「Release構成」の設定で、
[プロジェクト]→[プロパティ]→...から[デバッグ情報の形式]を「無効」にする。
▲Release構成でやる設定
※これをやらないと、「Releaseモード」で「libファイル」を使った時に、
「デバッグ情報がないものとして、オブジェクトにリンクします」
のような警告がでるようだ。
【メモ】
もし作成した「glpng」プロジェクトを削除してしまう場合は、
「Debug構成」の方の「デバッグ情報の形式」を「C7 互換 /Z7」にする必要がある。
※プロジェクトを削除すると「glpng(d).lib」に書き込まれた「pdbファイル」の所在(パス)が無効になるため
あとは、[ビルド]→[バッチビルド]→[すべて選択]クリック後
[ビルド]をクリックすればよい。
すると、「Releaseフォルダ」「Debugフォルダ」が作成され、
それぞれの中に「glpng.lib」と「glpngd.lib」ができている。
「glpng.lib」と「glpngd.lib」を「glut32.lib」と同じ場所に配置する。
例えば「VS2008 Express SP1」の場合は「C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib」になるはず
ヘッダをインクルードするのみで使用可能。
※内部で「#pragma命令」をしている
... ... #include <gl/glut.h> #include <gl/glpng.h> //後ろでインクルード //---------- テクスチャID ---------------// GLuint texture[1]; //-------- 画像を読み込んでテクスチャのする ------------// bool LoadGLTextures() { pngInfo info; texture[0] = pngBind("test.png", PNG_NOMIPMAP, PNG_SOLID, &info, GL_CLAMP, GL_NEAREST, GL_NEAREST); if (texture[0] == 0) //「0」の場合失敗 { return false; } return true; }; ... ...
この場合、
ミップマップなし、α値なし、繰り返し方法が「GL_CLAMP」で、拡大・縮小のフィルタが「GL_NEAREST」
のテクスチャができる。
「glpng.h」を「glut.h」より先にインクルードすると、「#defineマクロ」に関する警告が出る。
「#defineマクロの再定義」に関するものだが、同じマクロの定義をしているのだけなのでたぶん問題ない。
警告が気になる場合は、「glpng.h」を「glut.h」の後にインクルードする。
詳しい使い方は
- http://www.web-sky.org/program/opengl/opengl01.htm...
- http://www.fifi.org/doc/libglpng-dev/glpng.html
ダウンロードしたフォルダ内にある「glpng.htm」に書いてある。