2013-06-22 39 views
1
  glBegin(GL_TRIANGLE_STRIP); 
     for(i; i <= degree; i++) 
     { 
      float 
      sunX=-200/2*cos(i*M_PI/180), 
      sunZ=200/2*sin(i*M_PI/180); 

      glVertex3f(0, 0, 0); 
      glVertex3f(sunX, 0, sunZ); 
     } 
     glEnd(); 

此代碼是工作。但是...OpenGL和C++:glBegin/glEnd

for(i; i <= degree; i++) 
     { 
      float 
      sunX=-200/2*cos(i*M_PI/180), 
      sunZ=200/2*sin(i*M_PI/180); 
          glBegin(GL_TRIANGLE_STRIP); 
      glVertex3f(0, 0, 0); 
      glVertex3f(sunX, 0, sunZ); 
          glEnd(); 
     } 

但這不起作用。跆拳道?邏輯在哪裏? 我需要插入另一代碼轉化爲循環文本出來:

glPushAttrib(GL_LIST_BIT); 
glListBase(1000); 
glCallLists(strlen(text), GL_UNSIGNED_BYTE, text); 
glPopAttrib(); 

,但我不能把它插入,因爲beetwen在glBegin(GL_TRIANGLE_STRIP)和glEnd()這是行不通的。我不能在glBegin(GL_TRIANGLE_STRIP),glEnd()裏面寫週期,因爲它在那裏不起作用。

+2

使用[頂點數組](HTTP:// WWW。 songho.ca/opengl/gl_vertexarray.html) –

+0

不要使用glBegin/glEnd和其他舊管道......它不再是好的做法... – dtech

回答

2

每次通話時間glBegin(GL_TRIANGLE_STRIP);你開始一個全新的三角形帶。它不會連接到以前for循環迭代的其他頂點。

+0

非常感謝! – user2254511

1

glBegin

」的文件...線,三角形,四邊形和多邊形被完全指定未按時提供不完整的規範結果要麼太少頂點指定即使一個。原始的或指定點的不正確的倍數時,不完整的原語被忽略;其餘被吸引......」

你需要指定一個在glBegin/glEnd對頂點之間的最小數量。該數字取決於您提供給glBegin的參數。

  1. GL_POINTS:1
  2. GL_LINESGL_LINE_*:2
  3. GL_TRIANGLESGL_TRIANGLE_*:3
  4. GL_QUADSGL_QUAD_*:4
+0

非常感謝! – user2254511