C# Попытка чтения или записи в защищенную память. Библиотеки OpenGL / OpenTK - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь выполнить следующий код:

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();

    }

В строке GL.ClearColor выдается ошибка:

Попытка чтения или записи в защищенную память

Нужна помощь.

1 Ответ

0 голосов
/ 03 мая 2020

Чтобы использовать большинство методов GL, вам нужно быть в потоке GL. Лучший способ узнать, находитесь ли вы в потоке GL, - это если какой-либо из переопределенных методов GameWindow вызывается запущенным GameWindow. Если вы хотите изменить поток GL, вам нужно создать новое окно в другом потоке, а затем использовать window.MakeCurrent().

Если вы используете его в другом месте (например, если вы удаляете текстуру из G C финализатор), вы можете получить это исключение.

...