在OpenTK中翻译对象

时间:2014-12-22 04:59:45

标签: c# .net windows graphics opentk

您好,我目前正在使用

 Vector3 translation = new Vector3( tx, ty, tz);
        GL.Translate(translation);

在OpenTK中翻译对象的方法,其中Vector3值从-1到1

如何更改此设置并使可移动对象的值以像素I的方式像素一样 可以根据用户的屏幕尺寸设置场景。

谢谢!

1 个答案:

答案 0 :(得分:1)

在传统OpenGL 1.x中,您可以通过使用GL.Ortho设置正投影来实现此目的:

GL.MatrixMode(MatrixMode.Projection);
GL.LoadIdentity();
GL.Ortho(0, Width, Height, 0, -1, 1);

GL.MatrixMode(MatrixMode.Modelview);
GL.LoadIdentity();
GL.Translate(1.0f, 0, 0); // translates by 1 pixel

预先警告,这将使您的应用程序难以移植到高分辨率(4K)显示器。如果可能的话,我建议使用与分辨率无关的方法。例如:

GL.MatrixMode(MatrixMode.Projection);
GL.LoadIdentity();
GL.Ortho(-1, 1, 1, -1, -1, 1);

GL.MatrixMode(MatrixMode.Modelview);
GL.LoadIdentity();
GL.Translate(1.0f / Width, 0, 0); // translates by 1 pixel