2013-03-20 80 views
0

我需要在OpenGL中設置國際象棋,並且想知道這是否是正確的選擇。OpenGL棋子

這是典當一塊代碼:

void pawn(void) 
{ 

    glClear (GL_COLOR_BUFFER_BIT); 

    DrawArc(xc+6, yc-3,1.3,M_PI/2,M_PI/2,25); 
    DrawArc(xc+6.7, yc-3,1.3,M_PI/2,-M_PI/2,25); 
    DrawArc(xc+6, yc-0.9,0.8,M_PI/2,M_PI,25); 
    DrawArc(xc+6.7, yc-0.9,0.8,M_PI/2,-M_PI,25); 
    DrawArc(xc+6.35, yc+0.25,0.5,(7*M_PI)/4,(3*M_PI)/2,25); 
    glBegin(GL_LINE_LOOP); 
     glVertex2d(xc+4.7,yc-3); 
     glVertex2d(xc+8,yc-3); 
    glEnd(); 

    glFlush(); 
} 

是否有這樣做的更好的辦法?

+0

使用模型?在3D建模程序中製作棋子應該不會太困難,然後允許您在OpenGL中使用更高效的功能,例如頂點緩衝區對象,並掌握加載模型的過程。 – Quetzalcoatl 2013-03-20 15:40:25

+0

您仍然可以使用頂點緩衝區或來自代碼的VBO只是意味着你必須在內存中填充一些緩衝區。 – 2013-03-20 17:24:59

+0

除非您的代碼產生某些特定問題,否則「更好」是一個相當模糊的術語。 – ApproachingDarknessFish 2013-03-28 05:27:45

回答

5

在代碼中創建幾何體不是最有效的方法。

的常用方法是:

  • 創建的3D建模工具的模型如攪拌機(免費)
  • 將其保存到一個文件,如.ply.obj
  • 負載的幾何形狀到圖形卡存儲器(Vertex Buffer Object
  • 使其使用glDrawArraysglDrawElements
+0

http://ogldev.atspace.co.uk/有一些很好的現代OpenGL教程,包括使用'Assimp'庫加載模型 – Kos 2013-03-20 15:44:30

+0

我知道這一點,但重點是在代碼中創建它。這是作業。 – 10001a 2013-03-20 15:46:34

+0

嗯,你問是否是一個好方法:-)讓我知道如何提供更多的幫助 – Kos 2013-03-20 15:48:28