私はJFrameとOpenGLを使って1,500回転の立方体(6つの正方形で描かれた)を表示するジョグルプログラムを作成しています。サイズ、回転速度、方向がそれぞれ異なる。最大のfpsは約25です。私はそれがかなり遅いと思います。私は照明効果やその他のものを実装していません。私のラップトップは、数インチ前に買ったi7を搭載した13インチMacbookの空気です。あなたの参照のための私のコードはここにあります。私のプログラムのパフォーマンスを向上させるためのアドバイスをしていただけますか?私の状況に適していないアドバイスも歓迎されます。たとえば、どのglまたはflu関数がコンピュータの速度を落としますか?どちらを避けるべきですか?または、どちらを交換することができますか?最後に、プログラムの全体的なパフォーマンスをどのように調べることができますか?また、自分のプログラムが最適化されていることをどのように知ることができますか? GLやインフルエンザの機能は自分のコンピュータが遅くなりますジョグルのパフォーマンスを最適化するにはどうすればよいですか?
public void draw(GLAutoDrawable drawable) { // this is a method called in the display method.
GL2 gl = drawable.getGL().getGL2();
gl.glMatrixMode(GL2.GL_MODELVIEW);
if (Constants.p == null) return;
for (Primitives p : Constants.p) { //Constants is a class that holds all the global variables
gl.glLoadIdentity();
gl.glTranslated(p.centerPoint.x,p.centerPoint.y, p.centerPoint.z);
gl.glRotated(p.angle, p.direction.x, p.direction.y, p.direction.z);p.angle += p.speed;p.angle = p.angle % 360;
if (Constants.modes == 0) { //draw using lines
gl.glBegin (GL2.GL_LINES);//static field
for (Integer[] l : p.line) {
gl.glColor3d(p.color.get(l[0]).x,p.color.get(l[0]).y,p.color.get(l[0]).z);
gl.glVertex3d(p.vert.get(l[0]).x, p.vert.get(l[0]).y, p.vert.get(l[0]).z);
gl.glColor3d(p.color.get(l[1]).x,p.color.get(l[1]).y,p.color.get(l[1]).z);
gl.glVertex3d(p.vert.get(l[1]).x, p.vert.get(l[1]).y, p.vert.get(l[1]).z);
}
gl.glEnd();
} else if (Constants.modes == 1) { //draw using squares
gl.glBegin (GL2.GL_QUADS);//static field
for (Integer[] f : p.face) {
for (Integer l : f) {
for (Integer i : p.line.get(l)) {
gl.glColor3d(p.color.get(i).x,p.color.get(i).y,p.color.get(i).z);
gl.glVertex3d(p.vert.get(i).x, p.vert.get(i).y, p.vert.get(i).z);
}
}
}
gl.glEnd();
}
}
}
もメッシュのインスタンス化について考えてみよう:https://www.opengl.org/sdk/docs/man/html/glDrawElementsInstanced.xhtmlを...私は主に選出に同意しますが、JOGLに基づいたより高いレベルのソリューション、つまりLibGDX、JMonkeyEngine、JogAmpのArdor3D Continuation(私はそれを維持しています)のようなフレームワークやエンジンなどのニーズに合わせることができます。 、... – gouessej
SSCCEを提供してください:http://sscce.org最適なものを決定するのに役立ちます。ローエンドのハードウェアをターゲットにしていても即座にレンダリングを使用しないでください。非効率です。 – gouessej