2022/09/17(土) [n年前の日記]
#1 [prog] OpenGL勉強中
PyOpenGLを使って、ボールが箱の中で跳ね回るスクリプトを書いているところ。それっぽい感じの見た目になってきたので、せっかくだから OpenGLを使っているWindows用スクリーンセーバとして移植を試みているのだけど。ちょっと問題が…。
PyOpenGL版と比べると、スクリーンセーバ版は、見た感じ明らかにFPSが低い。なんでだろ。
環境は、Windows10 x64 21H2 + MinGW (gcc 9.2.0)。
MinGW (gcc 9.2.0) を使うと遅くなるのだろうか。であればと、スクリーンセーバではない形で書いて動作確認。GLUT (freeglut 3.0.0) でフツーにウインドウを表示してから、同じ処理で描画。しかしコレだと PyOpenGL版と似た感じのフレームレートに見える…。ということは、スクリーンセーバ用に書くとフレームレートがおかしくなるということで…。
もしかすると、GLUT (freeglut) 使用版と、スクリーンセーバ版では、初期化時に行っている処理内容が違っていて、OpenGL のハードウェアアクセラレーションが効いていないのだろうか。スクリーンセーバ用は PIXELFORMATDESCRIPTOR を使って初期化するけれど、そこで何か指定を間違えているとか…?
それとも、OpenGL利用部分は正常に動作していて、スクリーンセーバとして動かすためのどこかしらでフレームレートが落ちているのだろうか…。
PyOpenGL版と比べると、スクリーンセーバ版は、見た感じ明らかにFPSが低い。なんでだろ。
環境は、Windows10 x64 21H2 + MinGW (gcc 9.2.0)。
MinGW (gcc 9.2.0) を使うと遅くなるのだろうか。であればと、スクリーンセーバではない形で書いて動作確認。GLUT (freeglut 3.0.0) でフツーにウインドウを表示してから、同じ処理で描画。しかしコレだと PyOpenGL版と似た感じのフレームレートに見える…。ということは、スクリーンセーバ用に書くとフレームレートがおかしくなるということで…。
もしかすると、GLUT (freeglut) 使用版と、スクリーンセーバ版では、初期化時に行っている処理内容が違っていて、OpenGL のハードウェアアクセラレーションが効いていないのだろうか。スクリーンセーバ用は PIXELFORMATDESCRIPTOR を使って初期化するけれど、そこで何か指定を間違えているとか…?
それとも、OpenGL利用部分は正常に動作していて、スクリーンセーバとして動かすためのどこかしらでフレームレートが落ちているのだろうか…。
[ ツッコむ ]
以上です。