ページ 11

OpenGLでpng画像の読み込みと表示

Posted: 2011年11月28日(月) 23:56
by hot
初めまして、質問させていただきます。

OpenGLで拡張子がpngの画像の読み込みから表示までを行いたいのですが、
サポートされていないということなので、以下のサイト

http://wiki.livedoor.jp/mikk_ni3_92/d/p ... 2%E8%C1%FC

で説明された通り「glpng」を使ってみようかと思いました。
これは昔のもので、再ビルドの必要があると書いてあります。

私の開発環境がVC++ Express 2010なのでサイトの通り再ビルドしたのですが、
プロパティ -> 構成プロパティ -> C/C++ -> デバック情報の形式で「無効」がなく、
サイトの通り設定できませんでした。

ですが、設定せずビルドは成功したので、生成された「glpng.lib」と「glpngd.lib」を
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib
に置きました。

そして、実際のプログラムで

pngInfo i ;
GLuint texture = pngBind ("test.png", PNG_NOMIPMAP, PNG_ALPHA, &i, GL_CLAMP, GL_NEAREST, GL_NEAREST) ;

という二行を足したところ

glpng.lib(pngerror.obj) : error LNK2001: 外部シンボル "__iob" は未解決です。

と、エラーが出てしまい実行できませんでした。
上の二行を除けば普通にエラーを起こさず実行できます。

解決法がご存知の方がいればご教授願います。
もしくは、他の方法でのOpenGLでpng画像の表示法があれば、お願いします。

Re: OpenGLでpng画像の読み込みと表示

Posted: 2011年11月29日(火) 17:23
by ISLe
「外部シンボル "__iob" は未解決です。」で検索すると、CRTライブラリを『マルチスレッドDLL(/MD,/MDd)』から『マルチスレッド(/MT,/MTd)』に変更すれば良いとか書いてあるページがたくさんヒットしますけど。

メンテを考えたら、libpngを使って必要なフォーマットに変換して、glTexImage2Dに食わせるほうが楽かもしれません。

Re: OpenGLでpng画像の読み込みと表示

Posted: 2011年11月29日(火) 21:11
by ぬっち
先日、OpenGLでpngの読み込みを行いました。
glpngなんてものがあったんですね!
知らなかったです。

私はISLeさんが仰っているように、pngの読み込みにlibpngを使いましたが、同じようなエラーに悩みました。
.libファイルを作成する時のコンパイルオプションと、.libファイルを使用するプログラムのコンパイルオプションが違っていたためです。
そのため、コンパイルオプション(特にCRT関連のもの)に注意してみると良いかもしれませんね。