Я играю с OpenGL и Go. Это в основном довольно интуитивно понятное, но есть несколько неудобных проблем интерфейса. Второй аргумент glBufferData должен быть размером буфера в памяти.Что такое канонический способ работы с функциями CGo, которые ожидают размер в памяти в байтах?
C.glBufferData(C.GLenum(target), C.GLsizeiptr(size), ptr(data), C.GLenum(usage))
В том случае, если буфер содержит 32 бит поплавки каждый элемент будет принимать 4 байта, так и для второго аргумента я могу сделать что-то вроде:
sizeofFloat := 4
size := sizeofFloat * len(buffer)
C.glBufferData(C.GLenum(target), C.GLsizeiptr(size), ptr(data), C.GLenum(usage))
Есть ли лучший способ получить размер типа в памяти, кроме просто жесткого кодирования?