OpenTK: Попытка чтения или записи защищенной памяти. Это часто указывает на то, что другая память повреждена

Я получил странную ошибку при запуске моего воксельного движка: Попытка чтения или записи защищенной памяти. Это часто указывает на то, что другая память повреждена

В этом:

        public void initGL()
    {
        GL.Enable(EnableCap.CullFace); {<- Error}
        GL.Enable(EnableCap.Blend); {<- Error}

        GL.BlendFunc(BlendingFactorSrc.Src1Alpha, BlendingFactorDest.OneMinusSrc1Alpha); {<- Error}
    }

Генерал:

public void genBlocks(float _px, float _py, float _pz, float _diameter, Universe _universe){
        this._planetPointer = GL.GenLists(1); {<- Error}
        GL.NewList(this._planetPointer, ListMode.Compile); {<- Error}

        GL.CullFace(CullFaceMode.Back); {<- Error}
        GL.PushMatrix();
        {
            for (int _y = 0; _y < _diameter; _y++)
            {
                for (int _x = 0; _x < _diameter; _x++)
                {
                    for (int _z = 0; _z < _diameter; _z++)
                    {
                        float _alt = (_x ^ 2) + (_y ^ 2) + (_z ^ 2);

                        if (_universe.getBlockB(_x, _y, _z, this) == 1 && (_universe.getBlockB(_x + 1, _y, _z, this) == 0 || _universe.getBlockB(_x, _y + 1, _z, this) == 0 || _universe.getBlockB(_x, _y, _z + 1, this) == 0 || _universe.getBlockB(_x - 1, _y, _z, this) == 0 || _universe.getBlockB(_x, _y - 1, _z, this) == 0 || _universe.getBlockB(_x, _y, _z - 1, this) == 0))
                        {
                            if (_alt > _diameter)
                            {
                                RenderBlock.renderBlock(_x, _y, _z, Block.stone, _universe, this.getBody());
                                Console.WriteLine("TESTEST");
                            }
                            else
                            {

                            }
                        }
                    }
                }
            }
        }
        GL.PopMatrix();
        GL.EndList();
    }

person ADG Developing    schedule 23.03.2014    source источник


Ответы (1)


Эта ошибка указывает на то, что вы вызываете функции OpenGL без допустимого контекста OpenGL. Если вы соберете и запустите отладочную версию OpenTK.dll, вместо этого вы получите GraphicsContextMissingException.

Просмотрите код создания окна и убедитесь, что вызовы OpenGL не выполняются до создания контекста/окна.

person The Fiddler    schedule 23.03.2014
comment
Итак, это потому, что я вызываю openGL до открытия окна? - person ADG Developing; 23.03.2014
comment
Это наиболее вероятное объяснение. Однако, не видя кода инициализации, это всего лишь обоснованное предположение. - person The Fiddler; 24.03.2014