的调用方法(使用任何参数)我想用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 * –