【发布时间】:2012-07-01 10:34:38
【问题描述】:
我正在尝试使用 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 严重损坏了?
【问题讨论】: