微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

OpenTK – 如何旋转2D对象

我想在我的OpenTK项目中旋转2D对象。

发生什么事是旋转的对象旋转后的对象,我不希望他们这样做。

我已经旋转一个对象后如何重置旋转?

protected override void OnRenderFrame(FrameEventArgs e) { GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); GL.MatrixMode(MatrixMode.Projection); GL.LoadIdentity(); GL.Ortho(0,game.Width,game.Height,-1,4); GL.MatrixMode(MatrixMode.Modelview); GL.LoadIdentity(); drawObject(); GL.Rotate(180,Vector3d.UnitZ); drawObject(); // Object I want to rotate GL.Rotate(-180,Vector3d.UnitZ); drawObject(); // I don't want this object to be rotated,but it does. How do I fix this? }

谢谢!

减lessdebugging会话中的堆栈大小,以捕捉无穷的recursion

什么是最好的方法来传递参数线程在C Windows中?

Linux运行时链接程序错误

dos.h for Linux?

Win32 – 获取主要的Wnd应用程序的句柄

虚拟内存分配没有物理内存分配

从安全的angular度来看,pipe道是否被认为是危险的?

在Windows中从纯C创build一个唯一的临时目录

在WP8应用程序中反序列化XML

睡眠| 警告隐式声明函数“睡眠”?

在固定功能流水线中,不会附加旋转操作。 取而代之的是第二个替换第一个(只要在其间没有Pushmatrix操作)。 所以你现在绘制的是第一个旋转180度的对象,第二个对象旋转180度左右。

回到您的问题:如果将第二个调用替换为使用LoadIdentity旋转,则将当前模型矩阵重置为单位矩阵,并删除所有变换。

drawObject(); GL.Rotate(180,Vector3d.UnitZ); drawObject(); GL.LoadIdentity(); drawObject();

注意:所有转换都在这里重新设置,如果你想保持转换和缩放,你可以尝试GL.Rotate(0,Vector3d.UnitZ);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐