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;
}
}
}
私が見る限り、n に 1 以外を指定すると、メモリが上書きされます。念のため、実際に n=2 で試してみたところ、out パラメータとして渡した Int32 に加えて、たまたまメモリ内にあった Int32 が書き込まれました。
OpenTK で影響を受ける関数はこれだけではなく、すべての genXXX 関数がそのようなものです。
ここで私は気が狂っていますか、それとも OpenTK が深刻に壊れていますか?