我正在尝试使用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,并且实际上它写入了我作为输出参数传递的Int32,以及它后面恰好在内存中的一个Int32。
这不是OpenTK中唯一受影响的函数,所有的genXXX函数都是这样的。
我是疯了,还是OpenTK真的坏了?
1条答案
按热度按时间velaa5lx1#
我认为这是内部功能。OpenTK在GL类中有这个函数,可以生成单帧缓冲区:
对于数组类型参数,OpenTK具有以下函数:
但我相信您也可以这样使用您提到的函数: