質問: ### 前提・実現したいこと OpenGL(PyOpenGL)で頂点数の多い(約15000頂点)3Dモデルを高速に描画したいです。 https://tokoik.github.io/opengl/libglut.html こちらのサイトを参考にPyOpenGLを使ってPMDファイルを読み込んでモデルを描画するものを実装しました。 ### 発生している問題・エラーメッセージ 頂点数が多いのか、glRotatedで回転させるとカクカクになってしまいます。(1FPS未満) ### 該当のソースコード こちらです https://github.com/Syno1875/PMDViewerWithPyOpenGL/blob/master/pyopengl3.py ### 試したこと 頂点8の立方体だと当然ですがカクつきませんでした 描画時に呼ばれる関数が重いのではと考え、 調べてみたら頂点の配列のポインタを渡すといいと書いてあったのですが、まだ試せていません。 ### 補足情報(言語/FW/ツール等のバージョンなど) PCはVAIO Fit、OSはUbuntu 16.04.2です。BlenderやDirectXを使ったゲームは普通に動きます。 Pythonのバーションは3.5.2です。 OpenGLを扱うのは初めてなので、何が原因で描画が遅いのか今一理解できていません。 多分glVertex3dvで頂点をセットしてるのが重いんだと思いますが、その程度で、 もしBlenderやその他ゲームのように高速に描画できる方法がありましたら教えて頂きたいです。
回答: ご提示の床井氏のページをご参考にされたということは、質問者さんもおっしゃるように、古い時代のAPIをご利用なさっているかと思います。お手持ちの環境で使用可能な、新しいバージョンのOpenGLを使用されますと、速度の大幅な向上が期待できるでしょう(ただ、おそらくプログラムにかなり手を加える必要があるかと思います)。 床井氏のご記事にも、より新しい手法に関するものがありますので、ご参考にいかがでしょうか。 参考1:床井研究室 - OpenGL 関係記事一覧 参考2:PyOpenGLで描画。VBO周りの混乱 - Qiita