[英]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.