0

現在、LWJGLを試しています。非常に単純な.objローダーを作成し、それを画面にレンダリングして、fpsのようなカメラを作成しました。それほど単純なものは得られませんが、私は40 FPSしか得られず、大量のビデオメモリを使用しており、GPUファンは地獄のように吹いています。私は何を間違えましたか?

これが私のコードです:

FPSController.java(メインクラス):http: //pastebin.com/kjWrJs0p

OBJLoader.java:http://pastebin.com/cGmLU0Fz _

Model.java:http://pastebin.com/gMX8SXXc _

Face.java:http://pastebin.com/5P813v9V _

最初の質問:私のFPSカウンターは実際には適切なカウンターですか?
2番目の質問:なぜこの小さなプログラムが私のGPUの多くを要求するのですか?
3番目の質問:テクスチャ、照明、シェーダーなどで使用するのに最適なモデルタイプは何ですか?

4

1 に答える 1

1

最初の質問:

あなたの FPS コードが何をしているのか本当に理解できないので、間違っているかもしれません。基本的な考え方は次のとおりです。

  • 開始タイマー (ナノ単位)(1)
  • ゲームを更新してレンダリングする
  • ナノ単位でタイマーを停止(2)
  • 減算: (2) - (1)、これは、マシンが更新してレンダリングするのにかかったナノ時間です (3)
  • 分割: 1e9 / (3). これがあなたのフレームレートです

Java の場合:

long start = System.nanoTime();
updateAndRenderTheGame();
long stop = System.nanoTime();
long time = stop - start;
float framerate = 1e9f / time; // 1e9f is equivalent to 1000000000.0f

2 番目の質問:

ファンが激しく吹いている理由は、おそらく FPS コードが機能せず、40 FPS しか得られなかったと思っているのに、実際にははるかに高いフレームレートが得られたためです。200 FPSとしましょう。これが起こらないようにするには、フレームレートを制限する必要があります。Thread.sleep(milliseconds);

Vertex Buffer Objects (VBO) を使用する必要があります。それらははるかに高速です。現在使用している方法は推奨されておらず、GPU にとって非常に高価ですが、より簡単に使用できます。VBO は実際に使用する価値があります。もう少し作業が必要ですが、パフォーマンスは大幅に向上します。いくつかの簡単なグーグルは、いくつかの良い参考文献と例を見つけるために行います.

3 番目の質問:

私は 3D グラフィックスの専門家ではありませんが、OBJ ファイルをいじってみました。Blender を使用して作成しました。ブレンダーでエクスポートするときは、ウィンドウの左側のパネルで、エクスポートするすべてのデータをチェックしてください。(例: 位置、法線、面、UV など...)

于 2012-08-14T21:52:05.223 に答える