如上所述,這個問題太廣泛了。但是你說你設法繪製一個立方體,所以我可以假設你可以設置相機和窗口。這給我們提供瞭如何渲染8個立方體。有很多方法可以做到這一點,但我會提到兩種截然不同的方法。
經典: 您製作的功能需要2個參數 - 立方體的中心和大小。用這些2來構建立方體的方式與現在的方法相同,但不是固定值,而是使用這些變量。例如,前臉應該是:
glBegin(GL_TRIANGLE_STRIP);
glVertex3f(center.x-size/2, center.y-size/2, center.z+size/2);
glVertex3f(center.x+size/2, center.y-size/2, center.z+size/2);
glVertex3f(center.x-size/2, center.y+size/2, center.z+size/2);
glVertex3f(center.x+size/2, center.y+size/2, center.z+size/2);
glEnd();
這只是爲了展示如何從變量會,你可以做你現在正在做同樣的方式。
現在,你提到你想使用着色器。着色器的主題非常廣泛,就像openGL本身,但我可以告訴你這個想法。在openGL 3.2中添加了稱爲幾何體的特殊着色器。它們的目的是將幾何體作爲整體進行工作 - 與之相反,頂點着色器在某個時間只能處理一個頂點,或者片段着色器在某個時間只處理一個片段 - 幾何着色器在某個時間只能處理一個幾何體。如果您渲染三角形,則會獲得有關穿過着色器的單個三角形的所有信息。這不會是什麼嚴重的問題,但這些着色器不僅修改這些幾何圖形,還可以創建新的幾何圖形!所以我在我的一個着色器程序中做渲染點,但當它們通過幾何着色器時,這些點將轉換爲圓形。同樣,您可以渲染點,但在幾何着色器內,您可以渲染整個立方體。點位置將作爲這些立方體的中心,您應該穿制服的立方體的大小。如果立方體的大小可能有所不同,則還需要製作頂點着色器,以便將大小從屬性傳遞給變量,這可以在幾何着色器中讀取。
至於顏色問題,如果不實現片段着色器,則只需要在呈現立方體之前調用glColor3f
。它需要3個參數 - 紅色,綠色和藍色值。請注意,這些值的範圍不是從0到255,而是從0到1.您可能會感到困惑,如果您使用白色背景,則不會呈現您的多維數據集,並且認爲將顏色設置爲200,10,10時應該看到紅色的立方體,但你什麼都看不到。這是因爲實際上你渲染了白色的立方體。爲了避免這樣的錯誤,我建議將背景設置爲灰色白色glClearColor
。
對於Stack Overflow,這個問題太寬泛了,但我保留了一系列可以使用的教程。您將通過教程7瞭解所需的全部內容。 –
您只需將矩陣傳遞給頂點着色器即可。更改要繪製(翻譯)的每個立方體的矩陣。另外,如果你想改變顏色,那麼你還需要一個顏色變量來傳遞給頂點着色器。正如尼科爾所說,有很多教程可用於這種事情。 – Robinson