自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

翻译 裁剪空间法--实现细节

下面从类FrustumG的函数,就像下面描述的平面,假设给予的参数矩阵A=M*P:#define m(row,col)  m[col*4+row-5]void FrustumG::setFrustum(float *m) {    pl[NEARP].setCoefficients(                 m(3,1) + m(4,1),           

2013-08-30 19:12:15 964

翻译 裁剪空间法-引出平面

在这里另外一种扩展视景体空间的方法就是基于裁剪空间属性。假设一个点p=(x,y,z,1)位于3D空间中。同样假设一个模型变换矩阵M和投影矩阵P。点p经过矩阵M和矩阵P变换之后的在裁剪空间中的点pc=(xc,yc,zc,wc):pc是本地坐标,当规范化后的点pcn:在规范化的裁剪空间中视景体是中心在原点的轴对齐的长方体,是通过下面的平面包围的:1. 左平面:x’= -1;

2013-08-29 11:51:27 1114

翻译 几何分析--源代码

视景体文件保护了源代码和一个vc6.0的工程。这个工程包含了运行这个测试所有的全部类,其中允许测试点、球体和轴对齐的包围盒。尝试并比较在每一帧有和没有视景体裁剪的区别。注意,fps计时器是每秒更新一次,所以请认真盯着计时器看。像往常一样,为本课程也提供了一个源代码,它可以有很多方式的优化,它同样没有保证没有任何错误,或者在任何地方都能运行。顺便说一句,如果你找到bug,或者可以提高的地

2013-08-28 16:38:40 889

翻译 几何方法---测试盒子 二

盒子测试还可以优化,在一定程度上,仅仅只有测试它的顶点,叫做“正顶点”和“负顶点”(叫做最大顶点和最小顶点)。盒子在(视景体)之外在足够的情况下测试一个单独的顶点,其中的第二个顶点,仅仅在需要区分盒子完全在视景体之内还是部分在视景体之内的情况下做测试。因此什么是这些点呢?找到这些点有多高的难度?假设一个平面和它的法线,一个正顶点是从盒子沿着法线方向延伸,负顶点刚好是相反。

2013-08-25 13:47:05 819

翻译 几何方法---测试盒子

测试一个盒子是比球体和点更棘手的问题。一个简单的方式就是测试盒子的八个点。一个简单的方法认为就是如果所有的点都是在视景体之外那么可以认为在视景体之外。然而下面的图展示了这个并不总是这个情况。黄色盒子的点都在视景体之外,但是盒子有部分在视景体之内,因此它不应该被抛弃。一个安全的方式来解决这个问题来抛弃这个盒子,也仅仅,所有的点在同一个平面的错误边。在上面的黄色盒子中并没有这样的平

2013-08-24 15:56:06 789

翻译 几何方法---测试点和球

几何方法---测试点和球一旦平面定义好了。那么我们就可以测试点是在视景体之内还是之外。计算符号的距离可以告诉我们点是在平面的哪一边。假设平面的法向是向内的,如果点的符号距离是负的,那么说明点在视景体之外。否则点就在平面的右侧。下面的类frustumG方法说明了实现的方式,参数就是测试的点:int FrustumG::pointInFrustum(Vec3 &p) {    in

2013-08-23 13:31:59 737

翻译 几何方法--实现

几何方法--实现一个用来实现视景体的功能的类已经在下面呈现出来了。注意下面的代码并没有任何方面的优化,它仅仅只是用来伴随本课程出现的。这个类包含六个平面的数组,加上其他变量比如说视景体的八个顶点和相机的定义参数。平面只是用来裁剪操作,但是保存变量对我们的调试有用并且可视化的目的。类的头文件如下:class FrustumG {private:    enum {  

2013-08-22 16:12:06 846

翻译 视景体裁剪课程---视景体形状

在这个章节中我们将在OpenGL应用程序中引进视景体的形状。它是使用函数gluPerspective来定义透视投影,然后使用gluLookAt函数来定义相机的位置。首先,让我们回味一下这些函数的参数(都是float类型):1. gluPerspective(fovy, ratio, nearDist, farDist)2. gluLookAt(px, py, pz, lx, ly, l

2013-08-20 22:13:47 1570

原创 使用几何着色器来实现绘制模型轮廓线

我们经常要实现绘制模型轮廓线的效果,这一节就介绍使用几何着色器来实现这个效果。这一节的介绍是参考Philip Rideout 博客,下一节我会介绍这个博客复杂一点的效果实现步骤。几何着色器最重要的一个特性就是我们可以获得当前图元的相邻顶点信息,以下为例:其中的实线代表当前三角形本身的顶点,其中的虚线代表相邻的顶点信息。因此我们根据相邻点信息来判断当前线段是否处于轮廓线。

2013-08-17 16:52:33 2054

翻译 GLSL核心课程---纹理图像

大多数时候我们会将一幅纹理图像应用到模型上,或多或少就像壁纸一样。有时候纹理还可以看成是数据,不是颜色值。纹理坐标提供了在图像和模型之间的映射关系。在我们着色器中处理使用纹理之前我们需要在我们的OpenGL应用程序中做一些设置步骤。在这一节中,我们将覆盖一下经典纹理用法案例。OpenGL在我们着色器中使用纹理的第一步就是需要创建一个OpenGL纹理对象。一个通用的用法就是我们同样需要从文件

2013-08-14 21:45:33 2850

翻译 GLSL核心课程---纹理图像

大多数时候我们会将一幅纹理图像应用到模型上,或多或少就像壁纸一样。有时候纹理还可以看成是数据,不是颜色值。纹理坐标提供了在图像和模型之间的映射关系。在我们着色器中处理使用纹理之前我们需要在我们的OpenGL应用程序中做一些设置步骤。在这一节中,我们将覆盖一下经典纹理用法案例。OpenGL在我们着色器中使用纹理的第一步就是需要创建一个OpenGL纹理对象。一个通用的用法就是我们同样需要从文件

2013-08-13 19:18:26 1122

翻译 GLSL核心课程---纹理坐标

纹理坐标通常用作如何将一个一张图片贴到表面上。然而纹理坐标并不是限制执行这种贴图。纹理坐标本身同样也可以用作绘画模型。在这里我们用两个例子来说明纹理坐标如何使用。第一步就是使纹理坐标在我们的着色器有效。纹理坐标仅仅是又一个属性变量,就像法向量一样。因此在应用程序中,我们需要像这样处理,比如,我们需要添加包含纹理坐标的包含其他属性的顶点数组对象的缓冲区(请看这一节来了解更多属性细节)。在顶点

2013-08-12 13:32:09 3403

翻译 GLSL 1.2教程-管线概述

在发展过程中,下面的图是一个(非常)简化图的管道阶段和数据,在他们旅行。虽然极其简化但它足以呈现着色器编程的一些重要的概念。在本节内固定管道阶段被代替。注意,这个管道是一个抽象的,不一定包含任何特定实现的步骤。顶点变换在这里一个顶点是一组属性,如它的位置在空间、以及它的颜色,法线、纹理坐标、还有其他。对这个阶段的输入是每个顶点属性。一些操作的固定功能在这个阶段是:1. 

2013-08-11 13:42:49 1198

翻译 GLSL 1.2教程(翻译)

在这篇着色器教程我们讲使用GLSL 1.2版本,虽然很多部分已经被遗弃了,但是GLSL的精华还是保持不变的。此外,本教程将继续在线因为学习基本的弃用OpenGL,这样更容易比学习新的版本。如果你正在寻找一个只处理非弃用功能访问GLSL核心教程,在Lighthouse3D。着色器是一个热门话题和3 d游戏已经表明,他们能够得到很好的利用,获得显著的效果。本教程旨在提供一个向世界介绍着色器。本

2013-08-11 12:56:54 1307

原创 使用VAO遇到的问题:

这两天在使用VAO的时候,出现了在使用glGenVertexArrays来申请VAO的时候发生访问冲突,还记得这个问题在以前遇到过,只是忘记了,当时是怎么解决,晚上查了一下,就是在使用这个VAO之前要先使用glewInit()函数初始化,估计这个跟扩展有关系。

2013-08-11 12:56:29 1179 1

原创 最近编译GLEW库所得

前几天在OGL 4.0 shading language cookbook中编译使用这个库,但是很郁闷的是,就一直报错(说找不到Lib文件,但是很明显,我都已经包含进去了,后面网上找了答案,其实问题就是库可能跟当前环境有冲突,这时最简单的解决方法就是重新编译这个库,后面我重新下载了glew库的源代码重新编译了一下,顺利通过。这让我联想之前也有一些奇怪的问题,现在终于都想通了,其实以后要是遇到这个问

2013-08-11 12:56:04 808

翻译 GLSL核心课程---聚光灯

聚光灯局限于点光源,例如,光源光线仅仅发射限制于一个方向。我们经常使用一个椎体来定义这个限制,但是其他形状同样也是可能的。下面的图展示了一个聚光灯椎体形状和相关数据:1. 位置:就是椎体的顶点(sp);2. 聚光灯方向:椎体轴定义的方向向量(sd);3. 截止角:椎体的光圈。在这里我们将假设是从方向向量到椎体边缘的角度()。顶点着色器跟点光源一样。它是在片段着色器中

2013-08-11 12:25:57 1412

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除