0

基本的なリアルタイム CPU レイ トレーサーを C++ で作成したいと考えています (主に学習用)。このチュートリアルは、基本的なレイ トレーサーを作成するのに最適でした。しかし、これをリアルタイムで画面に描画するための最良の解決策は何でしょうか? レイ トレーシング部分を最適化する方法については尋ねていません。ファイルではなく画面上にペイントするように、ペイント部分だけを最適化する方法について尋ねているのではありません。

私は on/for windows で開発しています。

4

2 に答える 2

2

Win32API を使用した基本的な描画メカニズムに関するこのコード プロジェクトの記事を確認できます。

更新: OP は Win32API が提供しない高速描画を望んでいます。OP は、最適化プロセス中にレイ トレーシング アルゴリズムのスピードアップを測定できるように、これを必要とします。描画のその他の可能性は、DirectX、XNA、Allegro、OpenGL です。

于 2012-05-26T16:52:01.183 に答える
0

私は専門的にリアルタイム CPU レイトレーサーに取り組んでおり、そこで 2 年間の作業で見たものから、画像を表示する GPU 部分はボトルネックにはならず、到達した場合のボトルネックは RAM の速度になります。描画技術が大きな違いを生むとは思いません。

例として、クラスタリングを使用しています(1つのCPUでは十分ではありません:p)、空を見ているときに1920x1080で100〜200fpsをレンダリングできましたが、ボトルネックは表示部分ではなく、ネットワークでした...編集:ディスプレイには OpenGL を使用しています。

CPU レイトレーサーを実行しているときは、printPixelToGPU() を実行するつもりはありませんが、RAM に書き込み、画像が完成したら GPU に送信します。printPixelToGPU() を実行すると、おそらく大きなオーバーヘッドが発生する可能性があり、(私の意見では) 非常に悪い設計上の選択です。

時期尚早の最適化のようです。しかし、それでも気になる場合は、OpenGL、directX などを使用して GPU に転送できる RAM テクスチャの数をベンチで調べて、平均フレームレートを出力してください。フレームレートが非常に高いことがわかるでしょう。したがって、SDRAM または非常に貧弱な GPU を使用していない限り、その「ボトルネック」に到達することは決してありません。

于 2016-04-04T10:10:03.480 に答える