mieki256's diary



2023/12/30() [n年前の日記]

#3 [prog] libpngを使ってOpenGLのテクスチャを用意できるか試した

Windows10 x64 22H2 + MinGW (gcc 6.3.0) 上で、OpenGL を使ってテクスチャを表示したい。OpenGL には画像を読み込む機能が無いので、libpng を使ってpng画像を読み込んで、OpenGL のテクスチャにできるのか試してみた。

以下のページがとても参考になった。ありがたや。

_PNGファイルをOpenGLで扱う話

紹介されてるサンプルプログラムをほとんどそのままコピペさせてもらって、MinGW (gcc 6.3.0) 上でもビルドして動かせるか試してみた。

必要なライブラリ :

今回試すプログラムのビルドには、freeglut、zlib、libpng が必要。

MinGW に freeglut を導入する手順は、以前メモしてあった。

_mieki256's diary - MinGWでfreeglutを使ってみた


zlib と libpng の導入手順は以下。

_mieki256's diary - MinGW上でzlibやlibpngをビルドしてみた

ソース :

ソースと利用画像は以下。前述の参考ページで紹介されてるサンプルとほとんど同じだけど…。

_01_loadpng_draw.c
_texture.png

Makefile の内容は以下。

_Makefile
01_loadpng_draw.exe: 01_loadpng_draw.c Makefile
    gcc 01_loadpng_draw.c -o 01_loadpng_draw.exe -D FREEGLUT_STATIC -lfreeglut_static -lopengl32 -lwinmm -lgdi32 -lpng -lz

.PHONY: clean
clean:
    rm -f *.exe
    rm -f *.o
  • 01_loadpng_draw.c から 01_loadpng_draw.exe を作る。
  • -D FREEGLUT_STATIC -lfreeglut_static と指定して、freeglut を静的リンクする。
  • -lopengl32 -lwinmm -lgdi32 を指定して、opengl32、winmm、gdi32 をリンク。
  • -lpng -lz を指定して、libpng を利用。

実行結果は以下。

ss_01_loadpng_draw.png

ポリゴン(GL_QUADS)にテクスチャ画像を貼り付けることができている。

たしかに、libpng を使って、png画像を読み込んで OpenGL用のテクスチャに変換することができると分かった。

課題 :

ストレージ上に存在するpng画像ファイルを読み込んで、OpenGL でテクスチャ画像として利用することはできる、と分かったけれど。exeファイルにpng画像をバイナリとして含めておいて、それを OpenGL のテクスチャとして利用する、その方法が分からない…。

リソースファイルなるものにpng画像を含めるように記述しておいて、exeファイル中のリソース(png画像)のポインタ(メモリアドレス?)とバイナリサイズを得ることはできそうなのだけど…。libpng は、メモリ上に置いてあるpng画像のバイナリを読み込むことができるのだろうか…?

以上です。

過去ログ表示

Prev - 2023/12 - Next
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project