Мне нужно построить конус и / или цилиндр в OpenTK, используя OpenGL 3.0, поэтому мне нужно использовать PrimitiveType.
После того, как я сгенерирую все данные и индексы, мне нужно загрузить их, используя
Список () данных
Список () индексов
Мне нужно построить конус и / или цилиндр в OpenTK, используя OpenGL 3.0, поэтому мне нужно использовать PrimitiveType.
После того, как я сгенерирую все данные и индексы, мне нужно загрузить их, используя
Список () данных
Список () индексов
int segments = 26; //26
int radius = 40;
int height = 50;
double X = 0;
double Y = 0;
double Z = 0;
var data = new List<float>();
var indices = new List<uint>();
for (double y = 0; y < 2; y++)
{
for (double x = 0; x < height; x++)
{
double theta = (x / (segments - 1)) * 3 * Math.PI;
X = (float)radius * Math.Cos(theta);
Y = (float)height * y;
Z = (float)radius * Math.Sin(theta);
data.Add(DataConverter.ToFloat(X));
data.Add(DataConverter.ToFloat(Y));
data.Add(DataConverter.ToFloat(Z));
}
}
for (int x = 0; x < segmente ; x++)
{
indices.Add((uint)x);
indices.Add((uint)(x + segments));
indices.Add((uint)(X + segments + 1));
indices.Add((uint)(x + segments + 1));
indices.Add((uint)(x + segments));
indices.Add((uint)x);
object = Matrix4.CreateTranslation(position);
}
Это создает цилиндр, который внутри похож на конус, но я не знаю почему, и если я добавлю больше сегментов, он станет конусом вместо цилиндра.
Эта формула была найдена здесь, и я адаптировал ее к новой версии OpenGL 3.0.