OpenGL(LWJGL)を使って3DレンダリングをしていましたがFPSが20しかでず、明らかに頂点数の割にFPSが低くて問題解決に悩まされました。
解決後は60FPS出ています。GPUの使用率も10分の1くらいになりました。
試したこと
- Instanced Drawする
- インターリーブ形式のVBOを使う
最終的な解決方法
glVertexAttribPointer(0, 3, GL_DOUBLE, false, 20, 0);
頂点データをGL_DOUBLEで登録するのがいけなかったようです。double値だと計算に時間がかかるのかなんなのかは知りませんがとにかくdouble値はできるだけOpenGLで扱わないほうが良さそうです。
glVertexAttribPointer(0, 3, GL_FLOAT, false, 20, 0);
こうやってfloat値で登録します。