1
我正在嘗試使用OpenGL繪製一個空心圓柱體。 (火箭的身體)我目前使用GL_TRIANGLE_STRIP
來做到這一點。OpenGL:三角帶環 - 如何繪製圓柱體?
這是我生成我的「頂點」:
GLfloat *rocket_body_verticies = new GLfloat[3 * 20];
for(int i = 0; i < 20; ++ i)
{
const GLdouble step = 2.0 * CONST_PI/(double)(20);
rocket_body_verticies[3 * i + 0] = 0.25 * std::cos(i * step);
rocket_body_verticies[3 * i + 1] = 0.25 * std::sin((i * step + 0.5 * step));
rocket_body_verticies[3 * i + 2] = 1.0 * (i % 2 == 0 ? -0.5 : 0.5);
}
我然後繪製此稍後使用:(使緩衝對象等之後)
glDrawArrays(GL_TRIANGLE_STRIP, 0, 20);
這將產生一個三角形帶,但並未加入「火箭體」的最後部分。沒有畫出圓柱體的矩形切片。
我可以通過將for
循環索引i
中的「20」更改爲「22」來更正此問題。或者我可以將步驟更改爲:step = 2.0 * PI/18.0
。因此,我會在其他要點上畫點。這似乎可能不是最好的方法。
有沒有更好的方法可以使用?我相當確定沒有這樣的對象,如TRIANGLE_STRIP_LOOP
。
'glDrawElements'如何提供幫助?我對文檔有點困惑 - 它看起來跟我的'glDrawArrays'一樣 – user3728501
@ user3728501 https://open.gl/drawing#Elementbuffers它接受一個元素緩衝區,用於索引頂點數據,允許頂點重複。 –
啊,對,我有點看到這是怎麼回事 – user3728501