Исключение инициализатора типа OpenTK и monogame

Я только что установил MonoGame и OpenTK 1.0, а в Visual Studio 2012 создал новый проект типа «Windows OpenGL Game»… но когда я запускаю проект, я получаю следующую ошибку:

The type initializer for 'OpenTK.Graphics.GraphicsMode' threw an exception.

Ошибка именно в этой строке (конструктор, на базе())

public Game1()
    : base() 
{
    graphics = new GraphicsDeviceManager(this);
    Content.RootDirectory = "Content";
}

Мой ноутбук имеет встроенную графику Intel 3000, и я думаю, что он поддерживает OpenGL ... это единственное, на что я могу указать. Есть идеи?


person Saeid Yazdani    schedule 20.07.2013    source источник
comment
Ну значит ошибка в конструкторе класса OpenTK.Graphics.GraphicsMode, у вас есть доступ к конструктору класса?   -  person Cyral    schedule 21.07.2013
comment
Этот ответ, вероятно, поможет вам. Возможно, ваш ноутбук не поддерживает требуемую версию OpenGL. stackoverflow.com/questions/14558256/   -  person craftworkgames    schedule 22.07.2013


Ответы (2)


Мы можем просмотреть исходный код и найти где исключение осталось необработанным. «Инициализатор типа» в основном означает статический конструктор:

static GraphicsMode()
{
    lock (SyncRoot)
    {
        implementation = Platform.Factory.Default.CreateGraphicsMode();
    }
}

К сожалению, копание в CreateGraphicsMode не выявило ни одного очевидного источника исключения.

Теперь вам нужно попробовать получить трассировку стека для этого исключения и выяснить, откуда оно исходит из CreateGraphicsMode. Отладчик должен предоставить вам эту информацию, когда исключение останется необработанным.


С небольшим количеством копаний, не видя трассировки стека (так что я в значительной степени предполагаю), я наткнулся на этого потенциального виновника:

throw new GraphicsModeException(
    "No GraphicsMode available. This should never happen, please report a bug at http://www.opentk.com");

Что, конечно, крайне нецелесообразно. Хотя, судя по его местонахождению, он, казалось бы, указывает на то, что не может найти подходящий графический режим.

На данном этапе, я думаю, было бы лучше собрать MonoGame и OpenTK из исходного кода, чтобы вы могли использовать отладчик, чтобы видеть точно, что они делают.

person Andrew Russell    schedule 21.07.2013
comment
Ну, я просто думаю, что это мой ноутбук с чипом garphics ... на моем компьютере все идет нормально - person Saeid Yazdani; 25.07.2013
comment
Для будущих поколений OpenTK теперь будет корректно возвращаться к контексту с программным ускорением, если аппаратное ускорение недоступно. Это медленно, но позволяет избежать сбоя. - person The Fiddler; 27.03.2015

Эта проблема возникла и у меня, и я не верю, что это проблемы с исходным кодом MonoGame.

A) Вам необходимо убедиться, что openTK установлен, http://www.opentk.com/

B) Как сказали craftworkgames, ваша машина (я полагаю, ноутбук) не поддерживает OpenGL. У меня была эта проблема на моем Sufrace Pro, и мне пришлось обновить драйверы Intel до последней версии (я использовал guru3d.com и www.guru3d.com/files_categories/videocards_intel_graphics_drivers.html в это время установил драйверы 15.31), и тогда он начал работать .

person Mastro    schedule 16.11.2013