簡體   English   中英

帶有可見邊的C ++ OpenGL空立方體

[英]C++ OpenGL Empty Cube with Visible Edges

我正在嘗試創建一個立方體。 我希望立方體本身是清晰的(黑色,因為背景是黑色的),但我希望12條線條變得薄而白。 是唯一的方法來創建線條並將它們放在邊緣的頂部? 或者有不同的方法來接近它嗎?

原因是我必須創造出在盒子里面彈跳的球。

也許我應該做glBegin(GL_LINES),甚至不擔心表面會碰撞,因為我可以用數學方法創建它?

我只是這樣創造我的方面:

glBegin(GL_POLYGON);
glVertex3f( -0.5, -0.5,  0.5 );
glVertex3f( -0.5,  0.5,  0.5 );
glVertex3f( -0.5,  0.5, -0.5 );
glVertex3f( -0.5, -0.5, -0.5 );
glEnd();

您只需繪制“線框”立方體即可。 您將看到邊緣但沒有面孔。 將填充模式設置為連線並渲染線而不是多邊形。

glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);  // this tells it to only render lines

glBegin(GL_LINES);

// endpoints of 1 line/edge
glVertex3f( ... 
glVertex3f( ...

// endpoints of second line/edge
glVertex3f( 
glVertex3f( 

// on up thru all 12 lines/edges

glEnd();

現在,這不是最有效的。 您可以使用線條,或者只繪制6個四邊形。 但由於這是“第一天”,這可能是一個簡單的開始。

最終你根本不想使用固定功能 - 它已被棄用。 但這將為您提供一個適應矩陣和照明等的環境。當您有嚴格的寶石渲染時,您將把它放入緩沖區並以大塊的形式發送到GPU,讓您的GLSL着色器處理顯卡上的數據。

歡迎來圖文!

也許我應該做glBegin(GL_LINES),甚至不擔心表面會碰撞,因為我可以用數學方法創建它?

正確。 您已經知道了多維數據集的邊界。

做一些線,然后反彈你的球。

您可以將多邊形模式(glPolygonMode,此處讀取)設置為GL_LINE以實現相同的功能。

也許我應該做glBegin(GL_LINES),甚至不擔心表面會碰撞,因為我可以用數學方法創建它?

OpenGL不會幫助您解決任何類型的沖突。

作為一個有點偏離主題的說明,請考慮使用更現代的方法。 即使您沒有使用較新的OpenGL版本,也會立即棄用立即模式繪制。

是一個體面的起點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM