Это просто ты не умеешь дебаггером пользоваться. Если у тебя Qt Creator - то он показывает только первый элемент массива по умолчанию. Чтобы увидеть все, надо написать такое выражение в окне watch values(на точность не претендую по названию): array_name[0..12]
float array__[10] = {1,2,3}; ///array float[10] declared
float (*xx) [10] = nullptr; ///pointer to array float[10] declared
xx = &array__; ///assignment of array address to pointer to array
float *some_pointer = &array__[0]; ///pointer to float declared and initialised with address of first element of array__
some_pointer[5] = 666; ///use the pointer as "pointer to array"
sizeof(indices_) - это было больно. sizeof нельзя так использовать, надо: sizeof(float) * 12, тогда это будет работать. Дело в том, что sizeof вычисляется на этапе компиляции, следовательно там sizeof не массива, а указателя.
Если написать обёртки, то намного проще всё и красивее. Если идти по learnopengl, там так и будет. Самое сложное - это втянуться, а дальше уже сильно легче.
какое-то масло маслянное - упомянутый glBufferData сам занимается распределением и параметр data у него const (специально глянул справочник) для однократного копирования куда-то внутрь. Его не обязательно выделять в хипе и держать до звонка. Он однократный
В С++ управлять нормально памятью без классов-оберток нельзя, потому что выделенная в конструкторе класса память в случае исключения – утечёт.
Если вам нужен массив на стеке, то нет нужды так делать, как вы хотите, а если нужен массив на куче, то 10000 раз подумайте о возможных проблемах. С вероятностью 99% std::vector<T> будет лучшим решением размещения массива на куче.
Опять-таки при размещении массива на стеке часто целесообразно использовать std::array<T, std::size_t>, вместо сишного массива, нестандартных возможностей компилятора в виде VLA или нестандартных функций вроде alloca.
тебе и остальным ребятам не понимающим зачем я использую массив вместо stl контейнеров объясняю - так надо в библиотеке которую я использую иначе никак