Я использую OpenTK для создания приложения C # OpenGL.
Я пытаюсь не использовать класс GameWindow для открытия контекста — вот мой класс, управляющий окном + контекстом:
using OpenTK;
using OpenTK.Graphics;
using OpenTK.Graphics.OpenGL4;
using OpenTK.Platform;
using OpenTK.Input;
class Window
{
private INativeWindow window_;
private IGraphicsContext context_;
private bool isExiting_;
public Window(int width, int height, bool fullscreen, string title = "StormEngine application")
{
window_ = new NativeWindow(width, height, title, fullscreen ? GameWindowFlags.Fullscreen : GameWindowFlags.FixedWindow, GraphicsMode.Default, DisplayDevice.Default);
context_ = new GraphicsContext(GraphicsMode.Default, window_.WindowInfo, 4, 4, GraphicsContextFlags.Default);
context_.MakeCurrent(window_.WindowInfo);
window_.Visible = true;
window_.KeyDown += (sender, e) =>
{
if (e.Keyboard[Key.Escape])
window_.Close();
};
isExiting_ = false;
}
public Window(int width, int height) : this(width, height, false) { }
public bool EndFrame()
{
context_.SwapBuffers();
window_.ProcessEvents();
return (window_.Exists && !isExiting_);
}
}
Затем я звоню Window w = new Window(800, 480);
, чтобы открыть окно.
Но как только я вызываю метод OpenGL, в моем случае int programId = GL.CreateProgram();
, я получаю исключение AccessViolationException.
Я предполагаю, что указатели функций OpenGL загружаются неправильно, но я не могу найти, где возникает проблема (я не получаю информации о том, что происходит внутри GL.CreateProgam()
).
Любая идея о том, что может происходить, почему и как это решить? :)
CreateProgram
? - person phaazon   schedule 01.07.2014