2012-01-23 54 views
1

我一直在研究3D圖形一段時間,現在我想更深入地瞭解每件事物的工作原理。我想要做的是創建一個不使用DirectX或OpenGL的簡單遊戲。我明白我相信的大部分數學,但是我遇到的問題是我不知道如何控制在窗口中顯示的像素。如何從頭開始創建實時渲染窗口?

如何指定我希望窗口中的每個像素是什麼顏色?

我知道我可能會遇到緩衝區和圖像剪切以及可能出現的效率問題,但我想創建自己的程序,以便從最底層的高級語言中看到,渲染過程起作用。我真的不知道從哪裏開始。我已經想出瞭如何輸出BMP,但我想有一個正在運行的程序每秒吐出超過20幀。我該如何做到這一點?

回答

0

你可以選擇一個環境,讓您以填補值的數組像素並顯示爲位圖。通過這種方式,您最接近在視頻內存中渲染RGB值。 WPF,Silverlight,HTML5/Javascript都可以做到這一點。如果你沒有全屏顯示,這些技術現在應該足夠了。

In WPF and Silverlight, use the WriteableBitmap.

In HTML5, use the canvas

然後,它由你來實現畫線,圓,貝塞爾曲線,3D投影的邏輯。

這很有趣,你會學到很多東西。

0

我,你是更有意讓在渲染過程中完全控制從較低的水平,而不是如何實現,關於一個特定平臺的特定利益字裏行間。

如果是這種情況,那麼您可能會爲您的高級搜索尋找像SDL這樣的庫,它可以爲您提供一個幀緩衝區,您可以直接渲染但抽象掉很多平臺特定問題。它已經存在了很長一段時間,並且有一些很好的教程可以讓你知道它是否是你正在尋找的東西 - 請參閱this tutorial以及同一系列中的後續內容,這應該足以讓你啓動並運行。

0

你說你想創建某種渲染引擎,這意味着desinging你自己的管道,和矩陣的計算類。您將使用哪種方法將3D座標轉換爲2D點。

當你得到你一直在尋找的2D點。您可以在窗口中使用say,例如,您可以選擇畫筆並在同時爲它們着色時繪製三角形值。

我不知道你爲什麼會需要的位圖,但如果你想練習說紋理化還可以做的是自己雖然偏離航線弱的計算機上,這可能需要每秒您的框架顯著。

如果您的目標是瞭解渲染如何在最低級別上工作。這無疑是一個很好的做法。

JT Schwinschwiga