D3D9学习笔记(六) 坐标系统及坐标变换 几何体

6.1坐标系统

D3D9采用左手系,即Z轴朝里

平面法向也是用右手

6.2生成和设置坐标转换矩阵

world trans

D3DXMatrixRotationX D3DXMatrixTranslation。。

view trans

D3DXMatrixLookAtLH

 

优化 频繁的set 变换矩阵的开销很大,因此可以本地记录world  view矩阵,然后只set 一个整体的world_view矩阵,而让view矩阵永远为单位帧

 

IDirect3DDevice9::SetTransform可以设置当前管线的矩阵

 

IDirect3DDevice9::SetViewport设置视口视口就是render-target的渲染区域

6.3光材质

IDirect3DDevice9::SetLight

IDirect3DDevice9::SetMaterial

 

一个重要问题:vb中顶点颜色、材质颜色与光照颜色之间的关系

1首先顶点在进行顶点处理器后(顶点变换和光照计算)才有颜色,如果不开光照,那么也就没有颜色(当然使用D3DFVF_XYZRHW指定的vb中的颜色除外,这是变换后的,这时已经是最终颜色了)

2.vb中设定的颜色(如D3DFVF_XYZRHW)虽然叫顶点颜色,但是其实正确的说法应该是顶点的材质颜色,如果在vb中设定了这个材质颜色,那么后来在对这个顶点设置SetMaterial是不起作用的。但是可以使用SetRenderState(
D3DRS_DIFFUSEMATERIALSOURCE
来重新设置顶点材质的来源。

3.
材质的颜色,只在设置给那些在vb中没有设定过顶点(材质)颜色的顶点才起作用,最终的光照颜色是顶点材质颜色和光照颜色的混合作用,材质颜色可以看做某个物体表面对某种颜色的光的吸收率。

4.任何一种光照计算都要涉及到两个因素 
顶点材质与光的颜色,及时环境光也是一样,设置了环境光,不去设置材质的环境光材质也会没有效果

时间: 2024-09-21 02:47:49

D3D9学习笔记(六) 坐标系统及坐标变换 几何体的相关文章

kvm虚拟化学习笔记(六)之kvm虚拟机控制台登录配置

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1290996 KVM虚拟化学习笔记系列文章列表 ---------------------------------------- kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51cto.com/703525/1288795 kvm虚拟化学习笔记(二)之linux kvm虚拟机安装 h

JSP学习笔记(六)-----在多个JSP页面之间传递参数

js|笔记|页面 1. 怎么在多个JSP页面之间进行参数传递?需要使用JSP的内置作用域对象session.利用它的两个方法setAttribute(),getAttribute()2. 下面的这个实例实现了把第一个JSP页面的参数传递给第三个页面的功能3. 代码如下:1.jsp<html><form method=get action=2.jsp>what's your name<input type=text name=username><input type

D3D9学习笔记(七) TEXTURE 纹理

texture永远是图形学最精华细节最多的地方,所以我也花了最多的时间阅读和写这个章节.   d3dDevice->SetTexture(n,tex)设置当前在n通道的texture,n的数量硬件在0-7.多个通道的texture可以进行blending   一个pixel在光照计算后得到一个颜色值c1,它纹理采样有一个颜色值c2,最终这个pixel的颜色值为 Color = c1 x DestBlend+c2 x SourceBlend 可以通过 IDirect3DDevice9::SetRe

【Alljoyn】 Alljoyn学习笔记六 Alljoyn基本概念

一.历史: Alljoyn是高通2011年推出的近距离P2P通讯技术,它为分布式应用程序在不同设备中提供了运行环境,特别是移动性.安全性和动态配置,支持Microsoft Windows.Linux.ios和Android等主流的操作系统平台,可以说AllJoyn是专门处理异构分布式系统中的难题而产生的,同时Alljoyn还是一项开源项目(项目地址http://www.alljoyn.org),按道理说应该很火才对, 因此高通在2013年12月份将该项目贡献了处理,并拉了一帮的大佬小弟(Linu

Nginx学习笔记六Nginx的模块开发

1.Nginx配置文件主要组成:main(全局配置)这部分的指令将影响其他所有部分.server(虚拟主机配置)这部分指令主要用于指定虚拟主机域名,IP和端口.upstream(主要为反向代理,负载均衡相关配置)这部分指令用于设置反向代理及后端服务 器的负载均衡.location(目录匹配配置)这部分指令用于匹配网页位置(例如,根目录"/","/images",等 等). location部分会继承server部分的指令,而server部分会继承main部分的指令.

VC++/MFC学习笔记(六)

  总在很多地方看到COM的相关的东西,但是一直以来对COM的理解只是局限于知道它的全称:Component Object Model.为此,专门读了一下<COM技术内幕>的第一章,力求先对COM有一个初步的了解,随着学习的深入,肯定会进一步对COM进行研究.   COM是什么? COM是一个说明如何建立可动态互变组件的规范.它提供了为保证能够互操作,客户和组件应遵循的一些标准. COM规范就是一套为组件架构设置标准的文档.遵循COM规范编写的组件能够满足对组件构架的所有需求. COM组件是以

JVM深入学习笔记六-JVM类加载

类加载过程 主要分为了 加载->链接(验证->准备->解析)->初始化->使用->卸载这几个阶段. 加载 三件事 1. 通过类的权限定名称来获取定义此类的二进制字节流(可以是文件,网络,数据库,动态等等等等) 2. 把类的结构放在方法区中 3. 创建Class对象作为访问入口 验证 主要包括了字节码验证,元数据验证(这部分在编译期间基本上避免了),类文件格式验证. 准备 包括了内存分配和类变量(static)初始值的设定,以及常量池的写入. 解析 主要是解析符号引用和直

D3D9学习笔记(三) Device

2.1架构 2.2类型 基本的device类型:hal:硬件渲染(发布).这也不是直接访问硬件驱动,而是访问在上一层的hal.(在顶点处理过程中,如果硬件处理失败,可尝试混合处理及纯软处理,设定标志D3DCREATE_MIXED_VERTEXPROCESSING)                                        soft软件渲染(但是这种软渲染并不一定拥有同当前硬件相同的渲染能力,所以要经常检查)                                   

D3D9学习笔记(九) effect (hlsl)

effect其实整合了shader和render state的控制两大部分内容 9.1 effect文件基本框架 part1 :shader state包括全局变量 shader数据结构定义,shader的实现 part2 :texture and sampler state,这个通常是全局变量,用于shader中,通常要定义在shader的实现之前 part3 其他的render state设置,写在technique的pass里,这才是effect文件的主入口 effet中任何一个变量后面都