【发布时间】:2014-03-17 00:28:34
【问题描述】:
我正在尝试使用 OpenTK 将实现非固定管道矩阵的 C++ 代码重写为 C#。我遇到了问题,因为我不明白为什么这段代码无效。
static class ModelView
{
static private Stack<Matrix4> matrix = new Stack<Matrix4>();
static public Matrix4 Matrix
{
get
{
return matrix.Peek();
}
set
{
matrix.Pop();
matrix.Push(value);
}
}
static public Matrix4 MatrixNormal
{
get
{
Matrix4 m = matrix.Peek();
m.Invert();
m.Transpose();
return m;
}
}
static public int Uniform { get; set; }
static public int UniformNormal { get; set; }
static private void SetUniforms()
{
if (Uniform == -1 || UniformNormal == -1)
throw new Exception("Projection matrix uniform is uninitialized");
GL.UniformMatrix4(Uniform, false, ref Matrix);
GL.UniformMatrix4(UniformNormal, false, ref MatrixNormal);
}
/* stack & matrices manipulating funcs */
}
Visual Studio 说“不能将属性、索引器或动态成员访问作为 out 或 ref 参数传递。”在那些线上:
GL.UniformMatrix4(Uniform, false, ref Matrix);
GL.UniformMatrix4(UniformNormal, false, ref MatrixNormal);
为什么我不能传递 Stack.Peek() 因为它应该只是对象引用。
【问题讨论】: