我想在C++中製作基本的實時CPU光線跟蹤器(主要用於學習建議)。 This tutorial非常適合製作基本的射線示蹤劑。但是,什麼是最好的解決方案來實時繪製在屏幕上?我不問如何優化光線追蹤部分,只是繪畫部分,以便它可以在屏幕上繪製而不是在文件中繪製。實時光線跟蹤器
我正在開發/ for windows。
我想在C++中製作基本的實時CPU光線跟蹤器(主要用於學習建議)。 This tutorial非常適合製作基本的射線示蹤劑。但是,什麼是最好的解決方案來實時繪製在屏幕上?我不問如何優化光線追蹤部分,只是繪畫部分,以便它可以在屏幕上繪製而不是在文件中繪製。實時光線跟蹤器
我正在開發/ for windows。
你可以使用Win32API的
更新的基本油漆機制退房this Code Project article:OP要快拉,其中Win32API的不提供。 OP需要這樣做,以便他們可以在優化過程中測量光線跟蹤算法的加速。其他繪圖的可能性有:DirectX,XNA,Allegro,OpenGL。
我在專業的實時CPU光線跟蹤器上工作,從我在那裏工作2年後所看到的,顯示圖像的GPU部分不會成爲瓶頸,如果達到這個瓶頸,瓶頸將成爲速度你的RAM,我不認爲繪圖技術會有什麼顯着的區別。作爲一個例子,我們正在使用聚類(一個CPU是不夠的:p),我們能夠在1920x1080的時候渲染100-200幀,當看天空時,瓶頸不是顯示部分,而是網絡。編輯:我們使用OpenGL的顯示。
當你在做一個CPU光線跟蹤器時,你不會做printPixelToGPU(),但是你會寫入你的RAM,然後一旦圖像完成就發送給GPU。做printPixelToGPU()可能會造成很大的開銷,並且(在我看來)是一個非常糟糕的設計選擇。
它看起來像不成熟的優化。但是如果您仍然擔心這一點,那麼只需製作一張替代Open GPU,DirectX ...以及打印平均幀速率的GPU內存紋理圖。你可能會看到幀率會非常高,所以除非你使用SDRAM或非常糟糕的GPU,否則你一定不會達到這個「瓶頸」。
帶有paintpixel和雙緩衝區的win32 api真的是最好的解決方案嗎? – Knarf
-1完全不足,速度明智。 –
所以想想速度,最好的解決方案是什麼? – Knarf