[英]OpenTK crashing as soon as I use OpenGL
我正在使用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()
內部發生的情況的信息)。
是否知道可能會發生什么,為什么以及如何解決? :)
算了,我發現了我的錯誤:)
在OpenTK中,GraphicsContext一旦創建並變為當前狀態,就需要加載。 為此,僅在context_.MakeCurrent(window_.WindowInfo);
之后context_.MakeCurrent(window_.WindowInfo);
,我補充說:
(context_ as IGraphicsContextInternal).LoadAll()
我必須從Github上的GameWindow類源中找出答案,因為根本沒有記錄這種創建窗口的方式^^
現在它就像一種魅力。 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.