По крайней мере, IMO, что нужно сделать, это просто полностью исключить NUM_POLYGON_OBJECT_VERTEX
:
static const float vertices[] =
{
{{2.4f, 0.5f, 0.0f}, {0.0f, 0.0f, 1.0f} },
...
};
Затем компилятор автоматически вычислит размер на основе данных инициализации.Чтобы потом вычислить размер, вы можете использовать что-то вроде:
#define elements(array) (sizeof(array)/sizeof(array[0]))
Обратите внимание, однако, что то, что у вас есть, на самом деле не кажется многомерным массивом (ни ближайший эквивалент C,массив массивов).Поскольку у вас есть только один набор скобок, то у вас есть одномерный массив.Если вы хотите создать его как многомерный массив, вы можете сделать что-то вроде:
static const float vertices[][3] =
{
{{2.4f, 0.5f, 0.0f}, {0.0f, 0.0f, 1.0f} },
...
};
Обратите внимание на добавленный [3]
- это говорит компилятору, что вам нужен массив массивовтри плавания за штуку.Это будет означать, что вершины [0] будут всем массивом из трех чисел с плавающей точкой, составляющих первую вершину, а вершины [0] [1] будут (по крайней мере условно) значением x
первой вершины.
Если вы определите массив таким образом, вы все равно можете использовать макрос elements
, описанный выше - но поскольку vertices[0]
будет полной вершиной вместо единственного float
, число элементов будет числомвершин вместо числа с плавающей точкой.
Исходя из включенных вами фигурных скобок, вы, возможно, захотите, чтобы это было:
static const float lines[][2][3] = { /* ... */ };
Прямо сейчас ваша связь говорит, что у вас есть пары вершин, а пара вершин определяет линию ...