SharpGL的视角及投影设置

#region  注释
此函数主要是用来设定当前OpenGL操作的矩阵堆栈目标,
由于OpenGL主要是一个大很大的状态机,运算都采用矩阵预算,
通过MatrixMode可以设置当前操作的矩阵目标。
一般,在需要绘制出对象或要对所绘制对象进行几何变换时,
需要将变换矩阵设置成模型视图模式;而当需要对绘制的对象设置某种投影方式时,
则需要将变换矩阵设置成投影模式;只有在进行纹理映射时,才需要将变换矩阵设置成纹理模式。
mode参数说明:
1、GL_MODELVIEW:指定矩阵堆栈目标是模型视图矩阵,可以在执行此命令后,输出自己的物体图形了,以及执行缩放、平移、旋转等几何变换。
2、GL_PROJECTION:指定矩阵堆栈目标是投影矩阵,执行此命令后,可以设置投影效果参数,以及相机参数。简单点理解就是,设置绘制出来的图像呈现到屏幕的效果:视图、视角、成像规则等。
3、GL_TEXTURE:指定矩阵堆栈目标是投影矩阵,执行此命令后,可以对纹理贴图进行操作。

 透视投影设置
  设置当前矩阵模式,对投影矩阵应用随后的矩阵操作
//gl.MatrixMode(OpenGL.GL_PROJECTION);

 重置当前指定的矩阵为单位矩阵,将当前的用户坐标系的原点移到了屏幕中心
//gl.LoadIdentity();

 创建透视投影变换
简单点理解就是,设置相机镜头:广角大小、视图长宽比、视野近点、视野远点
投影的目的是定义一个视景体,使得视景体外多余的部分不会显示
投影包括透视投影和正式投影,后续详讲
Perspective(double fovy, double aspect, double zNerar, double zFar);
fovy是控制视野在XY平面的角度,范围是0--180度。你可以把它想象成是3dsmax中的相机镜头对应的视野参数。
aspect是窗口的纵横比
zNerar,zFar分别是近处和远处的裁面位置。
gl.Perspective(30.0f, (double)Width / (double)Height, 5, 200.0);

正交投影
gl.Ortho(-2, 2, -2, 2, 0.01, 100.0);
设置相机参数,三个参数一组,分别代表:相机位置、镜头正对位置、相机正向位置
上述表示:相机放在(-5,5,-5)位置,镜头对着(0,0,0)点,相机正向与Y轴一致
 视点变换
gl.LookAt(0, 0, -100, 0, 0, 0, 0, 1, 0);

 设置当前矩阵为模型视图矩阵
//gl.MatrixMode(OpenGL.GL_MODELVIEW);
#endregion

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值