C#尝试读取或写入受保护的内存。 OpenGL / OpenTK库

问题描述 投票:0回答:1

我正在尝试执行以下代码:

static void Main(string[] args)
    {
        int Width = 512, Height = 512; //window size
        var CubeSize = 200; // square size
        int left, right, top, bottom;
        left = (Width - CubeSize) / 2;
        right = left + CubeSize;
        bottom = (Height - CubeSize) / 2;
        top = bottom + CubeSize;
        GL.ClearColor(0, 0, 0, 1);
        GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
        GL.Color3(255, 0, 0);
        GL.Begin(BeginMode.Quads);
        GL.Vertex2(left, bottom);
        GL.Vertex2(left, top); 
        GL.Vertex2(right, top);
        GL.Vertex2(right, bottom);
        GL.End();

    }

在[C0行中,它引发错误:

尝试读取或写入受保护的内存

需要帮助。

c# opengl opentk
1个回答
0
投票

要使用大多数GL方法,您必须位于GL线程上。判断您是否在GL线程上的最好方法是,正在运行的GL.ClearColor是否调用任何重写的GameWindow方法。如果要更改GL线程,则需要在其他线程上创建一个新窗口,然后使用GameWindow

如果在不同的地方使用它(例如,如果从GC终结器处理纹理),则可能会得到该异常。

© www.soinside.com 2019 - 2024. All rights reserved.