我找上繪製的OpenGL缸的好辦法,我試圖繪製多個圓畫缸基於OpenGL的着色器
for (GLuint m = 0; m <= segments; ++m) {
for (GLuint n = 0; n <= segments; ++n) {
GLfloat const t = 2 * M_PI * (float) n/(float) segments;
//position
points[num++] = x + sin(t) * r;
points[num++] = .0005 * m;
points[num++] = y + cos(t) * r;
//color
points[num++] = 1;
points[num++] = 1;
points[num++] = 1;
//texture
points[num++] = sin(t) * 0.5 + 0.5;
points[num++] = cos(t) * 0.5 + 0.5;
}
}
和顯示功能
GLuint pointer = 0;
for (GLuint i = 0; i <= segments; ++i) {
glDrawArrays(GL_TRIANGLE_FAN, pointer, segments + 1);
pointer += segments + 1;
}
我詢問是否有直接的方法來繪製這個圓柱體
這個問題對我來說不是很清楚。通過「直接」繪製圓柱,你的意思是什麼?如果您問是否可以讓OpenGL繪製圓形等基本圖形而不將其分解爲三角形,則答案通常爲「否」。 – aardvarkk
你還需要一個三角形的地幔條,你可以重新使用外部圓盤的位置,你現在有 –
如果你的圓柱體已經分解成三角形,我建議你只用索引頂點來繪製它(看看'glDrawElements')。您只需創建所有頂點的列表(不重複),然後通過提供相關索引來繪製三角形。 – aardvarkk