[英]OpenTK GameWindow NotImplementedException
我在版本1.1(穩定版本)中收到NotImplementedException
,該源已包含在程序中,並且沒有資源就沒有編譯成OpenTK.dll(單個文件應用程序)。
我以前曾經這樣做過,但在1.1版中卻沒有:
public GameWindow(int width, int height, GraphicsMode mode, string title, GameWindowFlags options, DisplayDevice device,
int major, int minor, GraphicsContextFlags flags, IGraphicsContext sharedContext)
: base(width, height, title, options,
mode == null ? GraphicsMode.Default : mode,
device == null ? DisplayDevice.Default : device)
{
try
{
glContext = new GraphicsContext(mode == null ? GraphicsMode.Default : mode, WindowInfo, major, minor, flags);
glContext.MakeCurrent(WindowInfo);
(glContext as IGraphicsContextInternal).LoadAll();
VSync = VSyncMode.On;
//glWindow.WindowInfoChanged += delegate(object sender, EventArgs e) { OnWindowInfoChangedInternal(e); };
}
catch (Exception e)
{
Debug.Print(e.ToString());
base.Dispose();
throw;
}
}
有沒有解決的辦法? 一些消息來源表明這是一個鏈接器問題,在構建后正在修改工具箱庫。 簡而言之,可以修復它,還是應該恢復到較舊的版本(似乎沒有吸引力)?
確實,OpenTK 1.1包括了一個基於“ calli”指令的新綁定機制,而常規C#中不提供這種機制。 優點是,與使用委托或DllImports相比,它們使我們可以提高性能並降低內存消耗。 (OpenTK 1.1在5K objets中消耗了500KB的內存,而OpenTK 1.0中的30K對象則消耗了1500KB的內存。)
當然,缺點是我們需要將OpenTK.dll作為后生成事件進行后處理。 如果您正在使用預編譯的二進制文件或從源代碼編譯OpenTK.dll,這不是問題,但是如果將.cs文件直接包含到項目中,則將變得更加復雜。
三種解決方案,按優先順序排列:
根據將.cs文件嵌入項目的原因,某些方法可能比其他方法更有意義。 我個人遵循方法1,因為這是迄今為止最簡單,最通用的選項:
如果需要,OpenTK下載中將包含一個monolinker副本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.