2013-07-12 47 views
0

我使用OpenGL ES 2.0自己創建了一些簡單的渲染器。本質上,它只是根據給定的精靈紋理渲染四邊形的類。詳細來說,它實際上只是一個接受代表四邊形對象的對象。每個四邊形對象都維護着一個世界變換和對象變換矩陣,並提供了在給定數量的幀上變換它們的方法,並且還指定了到精靈的紋理偏移量。這個四類還維護一個在其矩陣上執行的變換操作列表。然後,渲染器類從四邊形中讀取所有這些屬性,並設置一個VBO在渲染列表中繪製所有四邊形。關於編寫一個純粹的愛好者渲染引擎的建議懇求

例如:

Quad q1 = new Quad(); 
Quad q2 = new Quad(); 

q1->translate(vector3(.1, .3, 0), 30); // Move the quad to the right and up for 30 frames. 
q2->translate(vector3(-.1, -.3, 0), 30); // Move the quad down and to the left for 30 frames. 

Renderer renderer; 
renderer.addQuads({q1, q2}); 
It's more complex than this, but you get the simple idea. 

從實現的角度來看,每一個幀上,它根據指令將每個對象的基礎的頂點,它們都加載到一個VBO包括α值的信息,並傳遞給着色器程序一次繪製所有四邊形。

這顯然不是我所說的渲染引擎,而是執行類似的任務,僅用於渲染二維四邊形而不是三維幾何。我只是好奇我是否正在開發一個臨時渲染引擎的正確軌道。我同意,在大多數情況下,使用已建立的渲染引擎開始理解它們是非常好的,但從我的角度來看,我喜歡對事物的實現有一些瞭解,而不是學習預先構建的東西,然後學習它是如何工作的。

回答

0

這種方法的問題是添加新的幾何體,紋理或動畫需要編寫代碼。應該可以使用已建立的工具(如3DS,Maya或Blender)爲遊戲引擎創建內容,這些工具完全是交互式的。這需要閱讀和解析Collada等標準文件格式。我不想通過自己實現代碼來壓縮自己的學習慾望,但是你真的應該看看PowerVR SDK,它提供了許多構建遊戲引擎的重要部分。源代碼提供並且免費。

+0

感謝您的回答。在這一點上,我更關心事情如何在基礎層面上工作,這就是爲什麼我想自己做點事情的原因。我關心的不是創建一個遊戲,而是創建一個簡單的模型渲染引擎,與人們在學校中會做的事情相關。我已經開始編寫一個簡單的資產加載器,它使用Assimp加載OBJ模型,並且想要創建一個簡單的渲染器並使用鍵盤和鼠標移動模型。 –