当前位置:首页 » 服务器技术
开发技术指南» 文章正文
    引言: 3.1 多纹理化概览 阅读此文表明您已同意文末的声明
 

 

    摘要:===================类的代码=========================={*******************************************************} { } { codemachine } { } { 版权所有 (c) 2004 nil } { } { 2004-6-10 } { } {*******************************************......
    摘要:author:kamusmail:kamus@itpub.netdate:2004-4 通过move tablespace来完成resize datafile。hwm的概念就不在此阐述了。 测试环境为oracle10g for linux,其它版本的一样。 我们先创建两个表空间,分别为t_tbs和t_tbs1,分别有一个数据文件,大小都是5m再创建一个test_user用户,给这个用户上述两个表空间的无限限额,并且设置默认表空间是t_tbs。[zha......


着色器和效果——3.1 多纹理化概览
3.1 多纹理化概览

多纹理化(multitexturing)可能是能用像素着色器实现的最简单的技巧了。此外,因为像素着色器替换多纹理化阶段,那么接下来我们应该对多纹理化“是什么”与“做什么”有一个最基本的理解。本节介绍多纹理化的简明概览。 【相关文章:[c#]:如何在C#中读写INI文件(四

阅读此文表明您已同意文末的声明 【扩展阅读:[c#]:如何在C#中读写INI文件(三

多纹理化后面的思想有一点与混合(blending)相关。在第七章中(译者注:原书第七章不在译文范围内)我们了解到:可以将正要被光栅化的像素与之前写入后台缓冲的像素进行混合来达成一种特效。我们推广这种相同的思想到多个纹理(multiple texture)。也就是说,我们一次允许几个纹理,然后定义这些纹理如何被混合在一起以到达一种特殊效果。多纹理化的一个通常的用法是执行光照。作为在顶点处理阶段使用direct3d的光照模型的替代,我们使用一种叫做“光照贴图”(light map)的特殊纹理贴图(texture map),它编码(encode)表面是如何被光照的(译者注:这句话的意思是“它定义表面是如何被光照的”)。例如,假设我们希望一盏聚光灯(spotlight)照在一个大木箱上,我们要么可以定义一个d3dlight9结构的聚光灯,要么可以将代表木箱的纹理贴图与代表聚光灯的光照映射混合在一起,如图3.1所示。 【扩展信息:[c#]:如何在C#中读写INI文件(五

当我们一开始讨论纹理化(texturing)的时候(译者注:对纹理化的讨论不在译文范围内,具体可参照原书第六章,本文是原书“第四部分:着色器与效果”的第三章),我们忽略了固定功能管线中对多纹理化的讨论,这有两个原因:第一,多纹理化是有一点棘手的过程,我们考虑到这在当时是一个高级话题;此外,固定功能多纹理化阶段被新的与更强有力的像素着色器替换掉了。因此花时间在已经过时的固定功能纹理化阶段上是无意义的。

图18.1:使用多纹理化渲染一个通过聚光灯照亮的木箱。这里我们通过将相应的纹理像素(texels)相乘来将这两个纹理组合起来。

注意:用第七章里的混合,结果图像依赖于纹理被混合的方式。在固定功能管线的多纹理化阶段,混合方程式被纹理渲染状态(texture render state)控制。用像素着色器,我们可以以可编程的方式在代码中写出混合函数的简单表达式。这使我们可以以任何我们想要的方式混合纹理。我们将在讨论为本章准备的样例应用程序时详细讨论纹理混合。

混合多个纹理(本例中是两个)来照亮木箱比起direct3d的光照来有两个好处:

n        光照是是预先在聚光灯的光照贴图里计算好的。因此,光照不需要在运行时被计算,这节省了处理时间。当然,只有静态对象与静态灯光的光照可以被预先计算。

n        因为光照贴图是预先计算好的,我们能够使用比direct3d的(光照)模型多的多的更加精确的与复杂的光照模型。(在更加真实的场景中的更好的光照结果。)

备注:多纹理化阶段典型的用于实现静态对象的完全光照引擎(full lighting engine)。例如,我们可以用一个纹理贴图保存对象的颜色,比如木箱的纹理贴图。
...   下一页
    摘要://///////////////////////////// xml http function //////////////////////////////function postxmldocument(suri, xmldoc) { var xmlhttp = xmlhttp.create(); var async = true; xmlhttp.open("post", suri, async); xmlhttp.setreq......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE