0
我在寫一個簡單的3D渲染引擎。
我的3D處理的最終結果是像素數據。接下來我需要用GDI +在屏幕上顯示它。
我正在使用WinForms和Visual Basic。我直接在窗體的ClientRectangle上繪圖。用GDI顯示像素數據+
我有一些問題。
處理完一個像素之後,我應該先將像素數據寫入緩衝區,而不是將每個像素單獨發送給GDI +?
- 如果是這樣,我應該一次緩衝多少屏幕?全屏,一半,四分之一,八分之一?我認爲這裏可能會有RAM使用/性能的折衷。
- 什麼是像素緩衝區的最佳數據結構?
- 我使用哪個GDI +命令渲染像素緩衝區(或單個像素)?是否可以避免將位圖創建爲中間步驟並將像素數據直接發送到屏幕?
我預計最大屏幕尺寸是1600x1200。 RAM可能低至1GB。
謝謝。
您應該首先寫入內存緩衝區 - 與渲染緩衝區相比,繪製單個像素效率非常低。你應該有足夠的空間;沒有理由不緩衝整個圖像。 – comingstorm 2012-04-25 00:29:14
好的,所以我有一個字節數組或一個32位整數數組或一組代表像素數據的結構數組,每個像素4個字節。將這些數據發送到屏幕的有效方法是什麼? – mcu 2012-04-25 04:21:00
正如@ananthonline所說,您應該從32位/像素的RGBA緩衝區開始。 「Bitmap」類允許您創建基於各種數據緩衝區[格式]的位圖(http://msdn.microsoft.com/zh-cn/library/ms534412(v = vs.85).aspx) - - 你應該試試'PixelFormat32bppARGB'或'PixelFormat32bppPARGB'。 – comingstorm 2012-04-25 15:58:27