我正在尝试使用 OpenTK 中的 GenFramebuffers 函数。在原生 OpenGL 中,此函数需要生成一些帧缓冲区名称和一个指向 int 的指针,这些名称将存储在其中。但是 OpenTK 变体需要生成多个名称和一个单独的 Int32 参数。
这是来自 OpenTK 的函数的源代码:
public static void GenFramebuffers(Int32 n, out Int32 framebuffers)
{
unsafe
{
fixed (Int32* framebuffers_ptr = &framebuffers)
{
Delegates.glGenFramebuffers((Int32)n, (UInt32*)framebuffers_ptr);
framebuffers = *framebuffers_ptr;
}
}
}
据我所见,如果将除 1 以外的任何值指定为 n,它将覆盖内存。为了确保这一点,我实际上用 n=2 进行了尝试,实际上它写了我作为 out 参数传递的 Int32 加上一个恰好在它之后的内存中的 Int32。
这不是 OpenTK 中唯一受影响的函数,所有 genXXX 函数都是这样。
我是在这里发疯还是 OpenTK 严重损坏?