我正在尝试为 Node.js 创建 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
这个例子很好地说明了这个问题。很明显,“像素”参数需要一个输出缓冲区,其大小取决于目标、级别、格式和类型参数。但是我如何或在哪里可以找到计算该大小的实际公式?
我能在网上找到的唯一相关信息是一个名为 compsize.c 的 C 源文件,它显然属于 Apple 的 OpenGL 实现。
谁能帮我找到这方面的硬数据?