opengl透视投影后得到的齐次坐标w分量的含义?

问题描述

opengl透视投影后得到的齐次坐标w分量的含义?

对于经过变化的a=(x,y,z,w ),那么可以知道,当w分量大于零时是世界坐标系下a在视点之前,w分量小于零时是在视点之后。在进行裁剪时,书上只是提到w分量大于零(《计算机图形学(opengl版)》第三版,321页最上,“aw只取正值“)使用z+w(近裁剪面)经行测试,判断是否需要裁剪。但是如果w分量是负值,我使用相同方法计算直线和裁剪平面的焦点,得到的坐标,进行透视除法后,x,y的值超出了[0,1]的范围。那么对w为负值时需要怎样处理?当A(x,y,z,w)和B(x,y,z,w),A的w为负值,B的w为正值,那么怎么计算直线AB和裁剪面的交点坐标?拜托各位大牛了~软渲染流水线卡到这一步完全没有思路,对于所有在视点之前的图形渲染没有问题,一旦w出现负值就各种错乱,拜托各位啦修改

时间: 2025-01-11 12:28:05

opengl透视投影后得到的齐次坐标w分量的含义?的相关文章

OpenGL透视投影后的Z值得范围是多少?可否自己设置矩阵改变Z值坐标?

问题描述 OpenGL透视投影后的Z值得范围是多少?可否自己设置矩阵改变Z值坐标? 透视投影后的Z值取值范围是[-1,1]还是[0,1]? 我想自己设置一个投影矩阵,投影之后使原本Z坐标大的变小,小的变大,达到的效果就是在模型前面设置一个视点,而能看到模型背面的信息? 求大神帮助哇~~

《OpenGL编程指南(原书第9版)》——3.3 顶点规范

3.3 顶点规范 现在我们已经在缓存中存储了数据,并且知道如何编写一个基本的顶点着色器,因此我们有必要将数据传递到着色器当中.我们已经了解顶点数组对象(vertex array object)的概念,它包含数据的位置和布局信息,以及类似glVertexAttribPointer()的一系列函数.现在,我们将更深入地了解顶点规范的相关内容.glVertexAttribPointer()的其他变种函数,以及如何设置一些非浮点数或者还没有启用的顶点属性数据.3.3.1 深入讨论VertexAttrib

《OpenGL编程指南》一3.3 顶点规范

3.3 顶点规范 现在我们已经在缓存中存储了数据,并且知道如何编写一个基本的顶点着色器,因此我们有必要将数据传递到着色器当中.我们已经了解顶点数组对象(vertex array object)的概念,它包含数据的位置和布局信息,以及类似glVertexAttribPointer()的一系列函数.现在,我们将更深入地了解顶点规范的相关内容.glVertexAttribPointer()的其他变种函数,以及如何设置一些非浮点数或者还没有启用的顶点属性数据. 3.3.1 深入讨论VertexAttri

通过代码学习OpenGL

这是本人学习江超宇翻译的NeHe OpenGL Tutorial 的结果,这个教程新手看很实用,只要你懂一点点OpenGL和WIN32就可以看的很明白.  创建了一个新的 Win32 程序(并非控制台程序) 之后, 链接 OpenGL 的库文件. 操作步骤是:.Project-> Settings, 点击 LINK 标签, 在 "Object/Library Modules" 下面那一行的开始处(在kernel32.lib之前) 增添 OpenGL32.lib, GLu32.li

opengl 教程(9) 顶点属性插值

原帖地址:http://ogldev.atspace.co.uk/www/tutorial09/tutorial09.html         本章我们了解3D管线的一个重要特性,在光栅化阶段的顶点属性插值.从前面的教程我们知道,为了在屏幕上输出渲染的物体,我们在顶点shader中输出gl_Position,这是一个四维向量,表示齐次空间的顶点坐标,x,y,z都经过了透视除法,除以了w值,x.y的范围是[-1,1],而z的范围是[0,1],而w则成为了1.0(因为w/w的缘故),接着会进行视口变

深入探索投影变换[转贴]

原帖地址: http://blog.csdn.net/popy007/article/details/1797121              透视投影是3D流水线的重要组成部分,它将视点空间中的点从视锥体(Frustum)变换到规则观察体( 裁剪空间),待裁剪完毕后再进行透视除法,此时规则观察体则成为归一化的规则观察体,然后归一化规则观察体中的XY平面进行视口映射,映射到屏幕空间,Z坐标则放入depth buffer中,然后再进行三角形的光栅化操作.       透视投影就是视点坐标中的顶点坐

3D编程:Hello,Structs!

Hello,Structs! 在本节,使用C风格的结构体重新编写HelloShaders effect.使用数据结构比单个的参数能更好的组织多个shader输入和输出.首先在NVIDIA FX Composer中创建一个新effect和material,就像本章开始那样,使用Add Effect向导添加effect,或者简单的拷贝HelloShaders.fx到一个新文件HelloStructs.fx中.我偏向于第二个选择,因为经常需要重用shader代码,建立在以前的材质基础上.拷贝到Hell

Computing Tangent Space Basis Vectors for an Arbitrary Mesh

为一个任意网格模型计算其切线空间的基本向量(即切线空间的T B N三个向量) Modern bump mapping (also known as normal mapping) requires that tangent plane basis vectors be calculated for each vertex in a mesh. This article presents the theory behind the computation of per-vertex tangent

Reflect & Refract (以水渲染为例)

我不是Shader帝,虽然知道Shader怎么写,但一直没仔细研究过.最近蛋疼至极,研究了下RenderMonkey,于是抽着几个看着比较有趣的效果做了一下.   先前的模型贴花http://www.cppblog.com/Leaf/archive/2011/01/07/138093.html 和CUBE MAP http://www.cppblog.com/Leaf/archive/2011/01/07/138106.html 就是此次蛋疼期的产物之一.   还是先围观,上图再说   本次要蛋