Почему этот код передается размером в 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(байты данных на число с плавающей точкой) действительно дает правильное количество байтов.

Другие вопросы по тегам