OpenGL: glDepthRange的理解_Augusdi的博客

文章推薦指數: 80 %
投票人數:10人

与x和y窗口坐标不同,在OpenGL中,z坐标总是被认为位于0.0~1.0的范围之间。

可通过glDepthRange()调整。

API中队glDepthRange的解释:After clipping ... OpenGL:glDepthRange的理解 Augusdi 于 2014-02-2512:54:38 发布 4277 收藏 分类专栏: OpenGL 版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/Augusdi/article/details/19908437 版权 OpenGL 专栏收录该内容 280篇文章 8订阅 订阅专栏 与x和y窗口坐标不同,在OpenGL中,z坐标总是被认为位于0.0~1.0的范围之间。

可通过glDepthRange()调整。

API中队glDepthRange的解释: Afterclippinganddivisionbyw,depthcoordinatesrangefrom-1to1,correspondingtothenearandfarclippingplanes.glDepthRangespecifiesalinearmappingofthenormalizeddepthcoordinates inthisrangetowindowdepthcoordinates. Regardlessoftheactualdepthbufferimplementation, windowcoordinatedepthvaluesaretreatedasthoughtheyrange from0through1(likecolorcomponents). Thus,thevaluesacceptedbyglDepthRangearebothclampedtothisrange beforetheyareaccepted. 也就是说,在OpenGL中绘制的时候所使用的三维坐标(x,y,z),其深度坐标z最后都会被压缩到[0,1]的范围存储起来。

为了证明这一点,使用gluUnProject来进行验证: #include #include #include #pragmacomment(lib,"glut32.lib") #pragmacomment(lib,"glu32.lib") #pragmacomment(lib,"opengl32.lib") #include #include usingnamespacestd; GLfloatvertexArr1[]={-5.0,0.0,0.0, 5.0,0.0,0.0, 0.0,10.0,0.0, -5.0,5.0,-5.0, 5.0,5.0,-5.0, 0.0,-5.0,-5.0}; intvertArrSize=6; doublecalcDist(GLdouble_x,GLdouble_y,GLdouble_z,GLdouble_wx0,GLdouble_wy0,GLdouble_wz0,GLdouble_wx1,GLdouble_wy1,GLdouble_wz1){ doubletDx=_wx1-_wx0; doubletDy=_wy1-_wy0; doubletDz=_wz1-_wz0; doubletDisUnit=sqrt(tDx*tDx+tDy*tDy+tDz*tDz); tDx=tDx/tDisUnit; tDy=tDy/tDisUnit; tDz=tDz/tDisUnit; doubletVecX=_wx0-_x; doubletVecY=_wy0-_y; doubletVecZ=_wz0-_z; doubletDisX=tDy*tVecZ-tDz*tVecY; doubletDisY=-tDx*tVecZ+tDz*tVecX; doubletDisZ=tDx*tVecY-tDy*tVecX; returnsqrt(tDisX*tDisX+tDisY*tDisY+tDisZ*tDisZ); } intfindClosestPt(GLdouble_wx0,GLdouble_wy0,GLdouble_wz0,GLdouble_wx1,GLdouble_wy1,GLdouble_wz1){ doubleminDis; intminDisPos; minDisPos=0; minDis=calcDist((double)vertexArr1[0],(double)vertexArr1[1],(double)vertexArr1[2],_wx0,_wy0,_wz0,_wx1,_wy1,_wz1); for(inti=1;i
Yaw–Verticalaxis

Pitch–Lateralaxis

Roll–Longitudinalaxis

ThePositionofAllthreeaxes

 
  3D绘图过程及原理简介 wjlgryx的专栏 03-17 375 3D绘图过程及原理简介收藏 StandardPrimitives(标准几何体) 在创建命令面板的Geometry(几何体)对象类型中有如下几个次级分类项目: •StandardPrimitives(标准几何体):相对简单的几何体,如立方体、球体和锥体等。

•ExtendedPrimitives(扩展几何体):相对复杂的几何体,如倒角柱体和纺锤体等。

•CompoundO... OpenGL坐标变换 linuxheik的专栏 08-16 5980 基础概述 众所周知,OpenGL是一个3D图形库,在终端设备上广泛使用。

但是我们的显示设备都是2D平面,那么OpenGL怎么把3D图形映射到2D屏幕那?这就是OpenGL坐标变换所要完成的工作。

  一般情况下,我们总是通过一个2D屏幕,观察3D世界。

因此,我们实际看到的是3D世界在2D屏幕上的一个投影。

通过OpenGL坐标变换,我们可以在一个给定的观察视角下,把3D物体投影到2D屏幕上,再经过后... OpenGL学习脚印:投影矩阵和视口变换矩阵(math-projectionandviewportmatrix) 热门推荐 王定桥的专栏 06-05 4万+ 写在前面 前面几节分别介绍了模型变换,视变换,本节继续学习OpenGL坐标变换过程中的投影变换。

这里主要是从数学角度推导投影矩阵。

对数学不感兴趣的,可以稍微了解下,或者跳过本节内容。

本文主要翻译并整理自songhoOpenGLProjectionMatrix一文,这里对他的推导思路稍微进行了整理。

通过本节可以了解到 透视投影矩阵的推导 正交投影矩阵的推导 视口变换矩阵的推导 zF “相关推荐”对你有帮助么? 非常没帮助 没帮助 一般 有帮助 非常有帮助 提交 ©️2022CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页 Augusdi CSDN认证博客专家 CSDN认证企业博客 码龄15年 暂无认证 1013 原创 7652 周排名 60万+ 总排名 1632万+ 访问 等级 16万+ 积分 1万+ 粉丝 1808 获赞 1623 评论 5368 收藏 私信 关注 热门文章 CUDA从入门到精通 166829 Eigen:C++开源矩阵计算工具——Eigen的简单用法 139993 图像处理常用边缘检测算子总结 103353 OpenCV获取摄像头并显示摄像头视频 96051 用SQL语句向表格中插入数据 86535 分类专栏 C++Template 7篇 DataStructure 9篇 Office编程 136篇 Raspberry 4篇 VS2010 42篇 VC++程序设计 675篇 Command集锦 8篇 Windows驱动设计 72篇 WindowsTouch 55篇 DirectCompute 4篇 Windows软件设计 141篇 WindowsTimer 20篇 Direct2D 64篇 ActiveX 7篇 XTP-ToolkitPro 1篇 CAD-CAM 18篇 BOOST 33篇 CGAL 9篇 Database 142篇 doxygen 6篇 InstallSetup 51篇 DSP数字信号处理 105篇 InterNet 26篇 Linux 129篇 Matlab 13篇 OpenCV 222篇 OpenGL 280篇 OpenInventor 165篇 OpenCascade 13篇 PCI 36篇 OSG 3篇 OGRE 11篇 QT 22篇 STL标准模板库 45篇 VTK 5篇 USB设计 42篇 SVN-GIT-P4 88篇 C++AMP 75篇 Debug 24篇 移动设备开发 62篇 娱乐小记 95篇 CxImage 44篇 图像处理 48篇 小常识 147篇 硬件设计 210篇 CUDA 107篇 OpenCL 10篇 OpenMP 54篇 易 7篇 SCADA 13篇 PCL-PointCloudLibrary 5篇 GSL-GNUscientificLibrary 94篇 VC操作硬件 6篇 ZLib 1篇 MPI 3篇 Ribbon 3篇 PCHardware 15篇 LoggingFile 42篇 Video 4篇 GIS 1篇 ML-机器学习 7篇 ChartDirector 1篇 dsPCI33 33篇 SerialPort 22篇 TIFF 12篇 Audio 42篇 BlueTooth 66篇 Fitting NumericRECIPE 6篇 八叉树-Octree 20篇 Tcl/Tk 40篇 GCC_G++_GDB_DDD 31篇 Shell 71篇 Grep 2篇 AWK 18篇 SED 6篇 gvim 78篇 kernal 6篇 LSF 3篇 Lex_Yacc 5篇 IC 89篇 最新评论 OpenMP:多线程文件操作 ChurchillLi: 嵌套双层for循环的例子确定对的?那这样相对于跟不加omp不一样了 LIBPNG读写PNG文件 怀念小时候725: 排版麻烦整理一下呗 八叉树Octree qq_41835097: 代码很好,可以直接运行,我得多研究一下,谢谢博主 OpenGL:Glut实现选取 有度不懂: glut32.lib打不开怎么办呀 取模、乘法和除法运算在CPU和GPU上的效率 qq_38926416: 666!想问下JDIM代表什么 您愿意向朋友推荐“博客详情页”吗? 强烈不推荐 不推荐 一般般 推荐 强烈推荐 提交 最新文章 C++自动化(模板元)编程基础与应用(3) C++自动化(模板元)编程基础与应用(3) C++自动化(模板元)编程基础与应用(4) 2022年7篇 2021年47篇 2020年142篇 2018年4篇 2017年14篇 2016年12篇 2015年150篇 2014年778篇 2013年1299篇 2012年277篇 2011年646篇 2010年632篇 2009年252篇 2008年4篇 2007年10篇 目录 目录 分类专栏 C++Template 7篇 DataStructure 9篇 Office编程 136篇 Raspberry 4篇 VS2010 42篇 VC++程序设计 675篇 Command集锦 8篇 Windows驱动设计 72篇 WindowsTouch 55篇 DirectCompute 4篇 Windows软件设计 141篇 WindowsTimer 20篇 Direct2D 64篇 ActiveX 7篇 XTP-ToolkitPro 1篇 CAD-CAM 18篇 BOOST 33篇 CGAL 9篇 Database 142篇 doxygen 6篇 InstallSetup 51篇 DSP数字信号处理 105篇 InterNet 26篇 Linux 129篇 Matlab 13篇 OpenCV 222篇 OpenGL 280篇 OpenInventor 165篇 OpenCascade 13篇 PCI 36篇 OSG 3篇 OGRE 11篇 QT 22篇 STL标准模板库 45篇 VTK 5篇 USB设计 42篇 SVN-GIT-P4 88篇 C++AMP 75篇 Debug 24篇 移动设备开发 62篇 娱乐小记 95篇 CxImage 44篇 图像处理 48篇 小常识 147篇 硬件设计 210篇 CUDA 107篇 OpenCL 10篇 OpenMP 54篇 易 7篇 SCADA 13篇 PCL-PointCloudLibrary 5篇 GSL-GNUscientificLibrary 94篇 VC操作硬件 6篇 ZLib 1篇 MPI 3篇 Ribbon 3篇 PCHardware 15篇 LoggingFile 42篇 Video 4篇 GIS 1篇 ML-机器学习 7篇 ChartDirector 1篇 dsPCI33 33篇 SerialPort 22篇 TIFF 12篇 Audio 42篇 BlueTooth 66篇 Fitting NumericRECIPE 6篇 八叉树-Octree 20篇 Tcl/Tk 40篇 GCC_G++_GDB_DDD 31篇 Shell 71篇 Grep 2篇 AWK 18篇 SED 6篇 gvim 78篇 kernal 6篇 LSF 3篇 Lex_Yacc 5篇 IC 89篇 目录 打赏作者 Augusdi 你的鼓励将是我创作的最大动力 ¥2 ¥4 ¥6 ¥10 ¥20 输入1-500的整数 余额支付 (余额:--) 扫码支付 扫码支付:¥2 获取中 扫码支付 您的余额不足,请更换扫码支付或充值 打赏作者 实付元 使用余额支付 点击重新获取 扫码支付 钱包余额 0 抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。

2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值



請為這篇文章評分?