Почему этот код передается размером в BITS методу openGl glBufferData вместо байтов (java)
Согласно документации opengl, когда вы вызываете glBufferData, параметр размера должен быть в байтах.
Однако это фрагмент из программы (которая прекрасно работает)
long vertBsize = ((short)5) * 4l * 4l;
glBindBuffer ( GL.GL_ARRAY_BUFFER, vbuffer);
glBufferData ( GL.GL_ARRAY_BUFFER, vertBsize , points, GL.GL_STATIC_DRAW);
Согласно документации java, short - 16-битное, так что, на мой взгляд, этот фрагмент кода неправильно отправляет количество битов в буфере точек.
Я глупый / слишком устал или я что-то упускаю
1 ответ
@ Рето Коради - вопрос для более подробной информации в конечном итоге привел меня к ответу.
Буфер точек содержит все числа с плавающей точкой. Поплавки делятся на четыре набора:
{1.0,2.0,4.0,1.0,
2.0,3.0,8.0,1.0,
3.0,4.0,2.0,1.0,
2.0,3.0,8.0,1.0,
1.0,2.0,4.0,1.0}
Так как число с плавающей запятой == 32 бита == 4 байта. Формула 5(наборы с плавающей точкой)* 4(число с плавающей точкой на набор)* 4(байты данных на число с плавающей точкой) действительно дает правильное количество байтов.