2024/05/21(火) [n年前の日記]
#1 [prog] Intel GMA 950で利用できるテクスチャの最大サイズを知りたい
ネットブック Lenovo IdeaPad S10-2 の電源を久々に入れたので、せっかくの機会だからと、以前作った OpenGL のプログラムが動くかどうか調べてみた。
_mieki256/ssp3droadgl
環境は以下。
_mieki256/ssp3droadgl
環境は以下。
- OS : Debian Linux 11 bullseye
- CPU : Intel Atom N270
- GPU : Intel Mobile 945GSE Express、と出てるけど Intel GMA 950 だと思う
- RAM : 2GB
◎ ビルド手順 :
ビルドに必要なパッケージは以下だろうか。足りてないパッケージもありそうだけど…。
git で clone してビルドする。
sudo apt install build-essential git sudo apt install libglfw3-dev freeglut3-dev libegl1-mesa-dev libgl1-mesa-dri libgles2-mesa-dev libglu1-mesa-dev libglw1-mesa-dev mesa-common-dev mesa-utils mesa-utils-extra
git で clone してビルドする。
git clone https://github.com/mieki256/ssp3droadgl.git cd ssp3droadgl cd src make -f Makefile.glfw clean make -f Makefile.glfw ./ssp3droadglfw
◎ 動作結果 :
./ssp3droadglfw で実行できるけれど、木や車のテクスチャが全然表示されない状態で動いた。背景(遠景)のテクスチャだけは表示されてるけれど…。
使用しているテクスチャ画像のサイズは以下。
もしかして、VRAMが足りなくて、テクスチャをVRAM上に置けなかったのだろうか?
使用しているテクスチャ画像のサイズは以下。
- 木や車のテクスチャは、4096x4096ドット。
- 背景テクスチャは、2048x1024ドット x 4枚。
もしかして、VRAMが足りなくて、テクスチャをVRAM上に置けなかったのだろうか?
◎ 利用できる最大テクスチャサイズについて :
Intel GMA 950が OpenGL で利用できるテクスチャの最大サイズってどのくらいなんだろう。ググってみたら、OpenGL の場合、GL_MAX_TEXTURE_SIZE という値を渡して取得することができるらしい。
_macOSでOpenGLプログラミング(1-10. OpenGLの環境を確認する) #macOS - Qiita
確認用のプログラムを書くのが面倒だなと思ったけれど、各社のGPUが返してくる値を一覧にしているページを見かけた。これは助かる…。
_OpenGL capabilities database - index
_OpenGL capabilities report: GL_MAX_TEXTURE_SIZE
_OpenGL capabilities report: Intel GMA 950
Intel GMA 950 の場合、GL_MAX_TEXTURE_SIZE は 2048 を返す模様。ということは、最大で 2048x2048ドットのテクスチャが使えるということだろうか。
前述のデモプログラムは、4096x4096のテクスチャを読み込んでVRAMに置こうとしていたので、2048x2048のテクスチャまでしか使えない Intel GMA 950 ではテクスチャが表示されなかった、ということになるのだろうか…。
逆に考えると、2048x2048のサイズにテクスチャを収めておけば、Intel GMA 950 という、かなり古くて性能が低いGPUでも、OpenGLを使ったプログラムが正常に表示される可能性が高い、ということになるのかな…。
_macOSでOpenGLプログラミング(1-10. OpenGLの環境を確認する) #macOS - Qiita
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize);
確認用のプログラムを書くのが面倒だなと思ったけれど、各社のGPUが返してくる値を一覧にしているページを見かけた。これは助かる…。
_OpenGL capabilities database - index
_OpenGL capabilities report: GL_MAX_TEXTURE_SIZE
_OpenGL capabilities report: Intel GMA 950
Intel GMA 950 の場合、GL_MAX_TEXTURE_SIZE は 2048 を返す模様。ということは、最大で 2048x2048ドットのテクスチャが使えるということだろうか。
前述のデモプログラムは、4096x4096のテクスチャを読み込んでVRAMに置こうとしていたので、2048x2048のテクスチャまでしか使えない Intel GMA 950 ではテクスチャが表示されなかった、ということになるのだろうか…。
逆に考えると、2048x2048のサイズにテクスチャを収めておけば、Intel GMA 950 という、かなり古くて性能が低いGPUでも、OpenGLを使ったプログラムが正常に表示される可能性が高い、ということになるのかな…。
◎ 別のプログラムを試した :
別の OpenGLプログラムも試してみた。これはテクスチャを一切使っていない。
_mieki256/ssisoroadgl
こちらは動いてくれた。ただ、道路の白線がやたらとチラチラしている。z depth?が足りないのだろうか? 道路だけでもテクスチャを使うべきだったかな…。
でもまあ、今時ネットブックで OpenGL を使ったプログラムを動かしてどうこうしたいという事例はほとんどないだろうから、このままでもいいかな…。
もっとも、もし対応させるなら、2048x2048のサイズのテクスチャを作成しておいて…。GL_MAX_TEXTURE_SIZE で値を取得して、4096x4096のテクスチャが使えないと分かったら、画質は悪くなるけれど1/4サイズの2048x2048のテクスチャを利用して対応させる感じになるだろうか。テクスチャのUV値等を調整する必要も出てくるかな…と思ったが、OpenGLの場合 0.0 - 1.0 でUV値を指定してるはずだから、そこは変えなくても良さそう。たぶん。
_mieki256/ssisoroadgl
git clone https://github.com/mieki256/ssisoroadgl.git cd ssisoroadgl cd src make -f Makefile.glfw clean make -f Makefile.glfw ./ssisoroadglfw
こちらは動いてくれた。ただ、道路の白線がやたらとチラチラしている。z depth?が足りないのだろうか? 道路だけでもテクスチャを使うべきだったかな…。
でもまあ、今時ネットブックで OpenGL を使ったプログラムを動かしてどうこうしたいという事例はほとんどないだろうから、このままでもいいかな…。
もっとも、もし対応させるなら、2048x2048のサイズのテクスチャを作成しておいて…。GL_MAX_TEXTURE_SIZE で値を取得して、4096x4096のテクスチャが使えないと分かったら、画質は悪くなるけれど1/4サイズの2048x2048のテクスチャを利用して対応させる感じになるだろうか。テクスチャのUV値等を調整する必要も出てくるかな…と思ったが、OpenGLの場合 0.0 - 1.0 でUV値を指定してるはずだから、そこは変えなくても良さそう。たぶん。
[ ツッコむ ]
以上です。