C# OpenGL/SharpGL中转换的简单代码(无矩阵理论课程)

C# OpenGL/SharpGL中转换的简单代码(无矩阵理论课程),c#,wpf,opengl,graphics,sharpgl,C#,Wpf,Opengl,Graphics,Sharpgl,我有一个OpenGL.NET WPF(SharpGL)应用程序,可以在即时模式下绘制小正方形,它们实际上是3D的: float z = -200f; float farz = 400f; ... // init gl.ShadeModel(OpenGL.GL_SMOOTH); gl.ClearColor(0.0f, 0.0f, 0.0f, 0.0f); gl.ClearDepth(1.0f); gl.Disable(OpenGL.GL_DEPTH_TEST); gl.Enable(OpenGL

我有一个OpenGL.NET WPF(SharpGL)应用程序,可以在即时模式下绘制小正方形,它们实际上是3D的:

float z = -200f;
float farz = 400f;
...

// init
gl.ShadeModel(OpenGL.GL_SMOOTH);
gl.ClearColor(0.0f, 0.0f, 0.0f, 0.0f);
gl.ClearDepth(1.0f);
gl.Disable(OpenGL.GL_DEPTH_TEST);
gl.Enable(OpenGL.GL_BLEND);
gl.BlendFunc(OpenGL.GL_SRC_ALPHA, OpenGL.GL_ONE);
gl.Hint(OpenGL.GL_PERSPECTIVE_CORRECTION_HINT, OpenGL.GL_NICEST);
gl.Hint(OpenGL.GL_POINT_SMOOTH_HINT, OpenGL.GL_NICEST);

// resize
gl.MatrixMode(OpenGL.GL_PROJECTION);
gl.LoadIdentity();
gl.Perspective(45.0, ratio, 0.1, farz);
gl.MatrixMode(OpenGL.GL_MODELVIEW);
gl.LoadIdentity();

// draw
gl.Begin(OpenGL.GL_TRIANGLE_STRIP);
gl.TexCoord(1, 1); gl.Vertex(x + 0.5f, y + 0.5f, z);
gl.TexCoord(0, 1); gl.Vertex(x - 0.5f, y + 0.5f, z);
gl.TexCoord(1, 0); gl.Vertex(x + 0.5f, y - 0.5f, z);
gl.TexCoord(0, 0); gl.Vertex(x - 0.5f, y - 0.5f, z);
gl.End();
我有“缩放”和“平移”按钮

缩放当前在0和-400之间改变+/-10,这已经足够好了

我试图通过使用LookAt实现pan,但我无法使它工作。我确实把它放在了
resize
方法中-这是放它的正确位置吗


是否可以使用单行代码将
眼睛
左/右/上/下移动+/-5次
,而不必上矩阵理论课?非常感谢。

使用
gl.Translate
翻译模型视图矩阵。e、 g:

gl.MatrixMode(OpenGL.GL_MODELVIEW);
gl.LoadIdentity();
gl.Translate(-5, 0, 0)

e、 g.:
gl.Translate(-5,0,0)哈哈,天才!非常感谢。请把它作为一个答案(对于像我这样的未来傻瓜)。干杯-我昨天花了一个小时试图看完谷歌上所有的“解释”,这些解释大部分都是相同文本的复制/粘贴。。