1

私はOpenGLとGoで遊んでいます。ほとんどがかなり直感的ですが、扱いにくいインターフェイスの問題がいくつかあります。glBufferData の 2 番目の引数は、メモリ内のバッファーのサイズにする必要があります。

C.glBufferData(C.GLenum(target), C.GLsizeiptr(size), ptr(data), C.GLenum(usage))

バッファに 32 ビットの浮動小数点数が含まれている場合、各要素は 4 バイトを使用するため、2 番目の引数については次のようにすることができます。

sizeofFloat := 4
size := sizeofFloat * len(buffer)
C.glBufferData(C.GLenum(target), C.GLsizeiptr(size), ptr(data), C.GLenum(usage))

ハードコーディングする以外に、メモリ内の型のサイズを取得するより良い方法はありますか?

4

1 に答える 1

2

そのために使用できますunsafe.Sizeof

とにかく「安全でない」ロジックをすでに使用しているため、これが最も簡単です。それ以外の場合は、安全でないインポートを回避するために、reflect.Typeのメソッドを使用できます。Size

于 2013-09-07T22:22:59.103 に答える