的調用方法(使用任何參數)我想用OpenTK編寫遊戲。 我想每次從GL類調用某個東西時檢查錯誤。來自參數
所以,讓我們說,我有這個類:
public static class GLCheck
{
public static void Call(function f)
{
// Call f function
CheckError();
}
public static void CheckError()
{
ErrorCode errorCode = GL.GetError();
if (errorCode != ErrorCode.NoError)
Console.WriteLine("Error!");
}
}
這樣我就可以調用函數是這樣的:
GLCheck.Call(GL.ClearColor(Color.White));
GLCheck.Call(GL.MatrixMode(MatrixMode.Modelview));
GLCheck.Call(GL.PushMatrix());
我該怎麼辦呢? 感謝
----------------- 答: -----------------
感謝答案! 我只知道所有的答案是使用代理(行動或Func鍵<>) 在.NET 2.0,這是不可用的,所以你必須創建自己的,在這裏我GLCheck類:
public static class GLCheck
{
public delegate void Action();
public delegate void Action<T1, T2>(T1 arg1, T2 arg2);
public delegate void Action<T1, T2, T3>(T1 arg1, T2 arg2, T3 arg3);
public delegate void Action<T1, T2, T3, T4>(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
public delegate TResult Func<TResult>();
public delegate TResult Func<T, TResult>(T arg);
public delegate TResult Func<T1, T2, TResult>(T1 arg1, T2 arg2);
public delegate TResult Func<T1, T2, T3, TResult>(T1 arg1, T2 arg2, T3 arg3);
public delegate TResult Func<T1, T2, T3, T4, TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
public static void Call(Action callback)
{
callback();
CheckError();
}
public static void Call<T>(Action<T> func, T parameter)
{
func(parameter);
CheckError();
}
}
再次感謝您的回答!
這聽起來像一個可怕的想法調用它。閱讀關於例外 –
如果OpenTK圍繞錯誤代碼,那麼他可以做的事情就不多了。他當然可以在CheckError中引發異常。 –
@ LasseV.Karlsen沒錯。我沒有考慮到這一點。 * Sheepish * –