Первый шаг - написать подпрограмму, которая рисует треугольник. Я оставлю это на ваше усмотрение. Затем просто нарисуйте серию треугольников, которые составляют форму цилиндра. Хитрость заключается в том, чтобы приблизить круг с многоугольником с большим количеством сторон, например 64. Вот немного псевдокода на макушке моей головы.
for (i = 0; i < 64; i++)
{
angle = 360 * i / 63; // Or perhaps 2 * PI * i / 63
cx[i] = sin(angle);
cy[i] = cos(angle);
}
for (i = 0; i < 63; i++)
{
v0 = Vertex(cx[i], cy[i], 0);
v1 = Vertex(cx[i + 1], cy[i + 1], 0);
v2 = Vertex(cx[i], cy[i], 1);
v3 = Vertex(cx[i + 1], cy[i + 1], 1);
DrawTriangle(v0, v1, v2);
DrawTriangle(v1, v3, v2);
// If you have it: DrawQuad(v0, v1, v3, v2);
}
В коде почти наверняка есть ошибка. Скорее всего, я испортил порядок намотки треугольников, чтобы вы могли получить только половину видимых треугольников или очень странный случай с видимой спиной.
Производительность скоро потребует от вас рисования треугольных полос и вентиляторов для повышения эффективности, но это должно помочь вам начать.