Это программа для рендеринга и рендеринга ландшафта.
У меня есть цикл, который выглядит следующим образом:
x = -MAX_SIGHT_DISTANCE;
y = -MAX_SIGHT_WIDTH;
while (x < MAX_SIGHT_DISTANCE)
{
while (y < MAX_SIGHT_WIDTH)
{
value = noise2d(x+camera.x, y+camera.y);
if (pointInFrustum(x-camera.x, y-camera.y, value, direction, FOV, MAX_SIGHT_DISTANCE) == 1)
{
// TODO: STORE VALUE TO AN ARRAY....SOMEHOW...
}
dz = value-camera.z;
distance = sqrt(x*x + y*y + (dz)*(dz));
x += DISTANCE_FUNCTION(distance);
y += DISTANCE_FUNCTION(distance);
}
}
Предполагается найти полуслучайное значение высоты при разных разрешениях: гораздо более высокое разрешение ближе, а более низкое - дальше.
Позже,
for x
{
glBegin(GL_TRIANGLE_STRIP);
for y
{
glVertex(x, y);
glVertex(x+1, y);
}
glEnd();
}
Предполагается, что это код рендеринга (в псевдокоде, конечно).
Я должен указать координаты каждой точки. Мне бы очень хотелось использовать треугольные полосы, поэтому мне нужно, чтобы все точки в одной полосе следовали друг за другом.
Приходит мой вопрос: как мне хранить эти очки? В Python я бы создал список, а затем просто отобразить все в списке.
Проблема в том, что это в C, массивы не являются динамическими. Так что мне нужен размер. Как я могу узнать этот размер? Как я могу пройти через это интеллектуальным способом (так как он имеет переменную ширину)? И как я могу предотвратить присоединение конца одного ряда к началу другого ряда?
Или я все делаю неправильно?