2D画像を読み込んで表示します。
DirectXは、D3DXという便利なライブラリが .bmp、.dds、.dib、.jpg、.png、.tga 形式の
画像を読み込んでくれましたが、OpenGLには何もありません。
.bmp ですら、自前で読み込み関数を作ったりしなければなりません。
glpng とか libjpeg など、その他諸々のライブラリを用いても良いのですが、一つのライブラリで
一つの画像形式とかでは面倒くさいです。配布する .dll などが増えるのも嫌です。
そこで割と身近にあり、Windows XP/Vista/7/8の4世代で手軽に使える GDI+ という物を発見しました。
Windows Imaging Component なるものもあるようですが、Vista以降標準搭載なので今回は
インストールなどせずとも最初からある GDI+ にします。
BMP, GIF, JPEG, PNG, TIFF, EMF 形式のファイルを読み込めるようです。
最近使ってなかったので気づきませんでしたが、 #include <objbase.h> を最初にインクルードしないと
エラーが大量に出る模様です。
*(2014.3.28追記)
ちなみに、このGDI+、DirectX7を使用しているようです。
Visual Studio 2010以降はディレクトリの参照設定を
プロジェクト毎に個別に設定しないといけないようになってしまいました。
面倒くさいですね。(^ω^;)
プロジェクトのプロパティで「C/C++」の「追加のインクルードディレクトリ」に
$(DXSDK_DIR)Include を追加するとビルドが通るようです。
ファイル |
main.cpp |
|
main.cpp
#pragma comment(linker, "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup") using namespace Gdiplus; #define WIDTH 320 GdiplusStartupInput gdiPSI; void LoadImage(wchar_t* filename,GLuint &texture) void end() glBindTexture(GL_TEXTURE_2D , tex); glutSwapBuffers(); |