2013-10-20 55 views
0

我正在使用xcode與glut,OpenGL和c + +,我試圖導入並繪製模型。我使用了obj來轉換.h文件,這是標題的一小部分,所以你可以看到結構。從C++頭文件中繪製模型

unsigned int M4GunNumVerts = 37812; 
GLfloat M4GunVerts [] = { 
// f 1/1/1 1582/2/1 4733/3/1 
{0.266494348503772, 0.0252334302709736, -0.000725898139236535}, 
{0.265592372987502, 0.0157389511523397, -0.000725898139236535}, 
{0.264890836474847, 0.0182004476109518, -0.00775888079925833}, 

我試圖在我的主要代碼中繪製這個。

glVertexPointer(3, GL_FLOAT, 0, M4GunVerts); 
glNormalPointer(GL_FLOAT, 0, M4GunNormals); 
glTexCoordPointer(2, GL_FLOAT, 0, M4GunTexCoords); 
glDrawArrays(GL_TRIANGLES, 0, M4GunNumVerts); 

當我跑我不能看到模型。我已經建立了一個過剩的窗口,並且製作了一個三角形來查看是否繪製了形狀,並且顯示了三角形。我不知道如何解決這個問題,所以我可以看到模型。

這裏是重塑功能

glMatrixMode(GL_PROJECTION); 

glLoadIdentity(); 

glViewport(0, 0, w, h); 

gluPerspective(45, ratio, 0.01, 1000); 

glMatrixMode(GL_MODELVIEW); 

有人能幫忙嗎?

+1

您尚未提供足夠的信息來回答此問題。座標空間在OpenGL中非常重要,但不知道投影和模型視圖矩陣有多少可能是錯誤的。此外,您還沒有在您提供的最小代碼片段中啓用任何頂點數組指針。請提供更多的代碼,其中包含這些內容。 –

+0

我已經啓用了頂點數組點,但我沒有包含它。我添加了一些代碼。 –

+0

@DavidGraovac:請不要使用諸如「obj to h」轉換器之類的東西。請使用像ASSIMP這樣的庫從文件加載模型數據。 – datenwolf

回答

0

要麼你:

  • 沒有啓用陣列正確
  • 和或相機的看法是在錯誤的方向你的對象
  • 和或你的相機是在對象內部。 (雖然CULL_FACE已啓用)
  • 並且或者錯誤地或根本沒有glColor !!! (不能看到黑色黑色)
  • 和或忘記綁定紋理(同時啓用)
  • 和錯glTexCoord(同時啓用)
  • 和或錯誤組燈(同時啓用)
  • 和錯透視相對於被攝體距離和大小(圖angle,znear,zfar
  • 如果對象是平面的,並且你正在尋找在薄側...

一些提示:

嘗試在場景周圍旋轉攝像頭(理想的情況是使用箭頭等一些按鍵,看看對象是在後面還是鼠標拖動......)。還可以嘗試向前/向後移動相機(也可以使用鍵,但我最喜歡的是鼠標滾輪)。

首先使用glBegin() glVertex() glEnd()以避免錯誤啓用的陣列出現問題,並且在沒有光照,紋理,CULL_FACE的情況下啓動(禁用它們!)。當你看到你的模型,然後逐步啓用,以便你看到什麼是錯的。畢竟是好的,然後嘗試數組。

如果你的對象似乎快要而CULL_FACE啓用了錯誤的方式,然後你的纏繞規則是錯誤的(CW/CCW)可以多見,而旋轉物體

這裏simple OpenGL scene app in BDS2006你可以使用它作爲你的窗口和攝像機/測試模型矩陣設置