NodeのOpenGLバインディングを作成しようとしています。OpenGL APIのサイズが非常に大きいため、これを手動で行うのは実用的ではないため、KhronosのOpenGLレジストリを使用しました。
提供されているファイルは解析が簡単ですが、重要な部分が欠落しているようです。これが、重要なパラメーターバッファーのサイズを計算する方法です。
このような出力バッファを必要とする関数定義の例を次に示します。COMPSIZE()式に注意してください。
GetTextureImageEXT(texture, target, level, format, type, pixels)
return void
param texture Texture in value
param target TextureTarget in value
param level CheckedInt32 in value
param format PixelFormat in value
param type PixelType in value
param pixels Void out array [COMPSIZE(target/level/format/type)]
category EXT_direct_state_access
dlflags notlistable
glxflags ignore ### client-handcode server-handcode
extension soft WINSOFT
glfflags capture-execute capture-handcode decode-handcode pixel-pack
この例は、問題をよく示しています。「pixels」パラメータには、ターゲット、レベル、フォーマット、およびタイプのパラメータに応じたサイズの出力バッファが必要であることは明らかです。しかし、そのサイズを計算するための実際の式をどこでどのように見つけることができますか?
私がオンラインで見つけた唯一の関連情報は、明らかにOpenGLのApple実装に属するcompsize.cと呼ばれるCソースファイルでした。
誰かが私がこれに関する難しいデータを見つけるのを手伝ってくれる?