龙书dx9 纹理

本章Cube例子与前面不同;使用了规范的类定义。

笔记一:头文件中class  const static成员变量的问题:

vertex.h:

struct VertexT
{
    VertexT(){}
    VertexT(float x,float y,float z,float nx,float ny,float nz,float u ,float v)
    {
        _x = x;_y = y;_z=z;
        _nx = nx; _ny = ny ; _nz = nz;
        _u=u;_v=v;
    }
    float _x,_y,_z;
    float _nx,_ny,_nz;
    float _u,_v;
    static const DWORD FVFT;
};
//const DWORD VertexT::FVFT= (D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1);//方式2
//#define  Vertex_FVF (D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1)//方式1
#endif // !__vertexH__

例子里给的是方式1; 当我使用方式2的时候出现链接错误,error link1169 多个重定义的符号。

然后我在vertex.cpp里进行定义,正确:

#include "vertex.h"
const DWORD VertexT::FVFT= (D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1);

注意:1.不要试图在头文件.h里定义变量(除了extern全局外) 2.定义在.h的static变量,在不同cpp文件内,由于static的局部性,每个cpp内都会开辟自己的static变量;比如我在a.h里定义了static int a=0;在b.cpp、c.cpp里#include a.h ;那么,b.cpp和c.cpp里的static a变量没有任何关系。

参考:http://bbs.csdn.net/topics/390720572?page=1

3.编译是把源码变成机器指令;预编译只是代码间的处理;#include预编译;作用是把文件内容复制到当前;static 关键字在编译时申请静态空间

4.#ifndef #endif 只是防止预编译时的相同头文件的重复复制而已;

笔记二:纹理的mipmaps和filter

原因:纹理的大小和屏幕三角形大小不一致。

首先,建立mipmaps链,设定不同纹理等级,选取等级,确定我需要的纹理; 其次,通过设定的filter方式,来进行纹理与屏幕三角的匹配

比如:

 Device->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);//第三步
 Device->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);//第二步 纹理被缩小
 Device->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_POINT);//第一步

纹理为:256*256建立mipmaps链:128*128,64*64,32*32... 假如三角形是100*100级别;
根据第一步:mipmap filter设置的是D3DTEXF_POINT(最近选择方式),现在选择128*128;纹理在根据第二步,多个纹理单元对应一个三角单元,D3DTEXF_LINEAR线性纹理过滤方式;每个三角形像素对最接近他的2*2纹理点进行采样;并取平均值;

参考:http://blog.csdn.net/kkk328/article/details/7055934

疑问:但我不清楚,如果是纹理放大模式(第三步),D3DTEXF_LINEAR模式,这时候一个纹理单元对应多个像素点,怎么进行选取纹理2*2取均值呢?

笔记三:纹理的四种寻址模式,

原因:纹理坐标可以超出1的范围。

几种模式:wrap(环绕)  、border边框模式(可自己设置)、clamp(截取(截取纹理在0到1范围内,并延伸边缘色))、mirror模式

时间: 2024-10-08 07:32:08

龙书dx9 纹理的相关文章

龙书dx9 chapter5 light的创建和 GetAsyncKeyState()&0x8000f的问题

笔记1:当我们找个文本,按下物理按键a   aaaaa时候,会发现第一次会有隔断的时间. 参考:http://tieba.baidu.com/p/1829831956 GetAsyncKeyState() 的返回值怎么理解? 实例代码里有if( ::GetAsyncKeyState(VK_RIGHT) & 0x8000f )这一句,按下→键后,得到 0x1 void main() { static int testInt=0; while (1) { if(short a =( ::GetAsy

Directx10 龙书笔记- 雾效的实现

雾 : 说白了就是一层有颜色的(一般是白色,灰色) 蒙蒙的感觉 混在光线里面. 不管是白天还是黑天. 龙书里面是这样实现的: 1.  给雾定义一个颜色 float3 gFogColor={0.7f,0.7f,0.7f}; 2. 然后呢在顶点着色器里面计算出 顶点级别的雾化需要的颜色加成比例 加成比例: 意思是当距离摄像机,就是你的眼睛越远,雾的浓度越大,就是颜色越深. 根据这个得出一个(0,1)的和距离有关的比例系数 vout.fogLerp = saturate((d-gFogStart)/g

龙书(Dragon book) +鲸书(Whale book)+虎书(Tiger book)

1.龙书(Dragon book)书名是Compilers: Principles,Techniques,and Tools作者是:Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman国内所有的编译原理教材都是抄的它的,而且只是抄了最简单的前端的一些内容.龙书中文版第一版龙书英文版第二版 2.鲸书(Whale book)书名是:Advanced Compiler Design and Implementation作者是:Steven S.Muchnick也就是高级编译

DirectX 9.0c游戏开发手记之“龙书”第二版学习笔记之8: Chap10: Lighting

这一章讲的是光照.光照(lighting)是Direct3D中非常重要的概念,而与之相对应的是材质(material)的概念.如果没有材质的话,那么光照的作用也无法体现. 在较早一些的关于DirectX 9的编程入门书籍里,一般是使用D3DLIGHT9结构体来建立一个光源,而用D3DMATERIAL9结构体来定义物体的材质.我们要做的就是一些很琐碎的家务活,基本上就是创建这些结构体对象.设定其中的参数.启用光照之类的,至于具体实现的细节就非吾等所需(和所能)操心的了. 不过在我们的"龙书&quo

龙书学习笔记(三)

在将第五章每个示例代码过了一遍之后,大致明白了光照这一章的内容,主要分为四点: 一.光照的类型分为三种,并且均通过结构D3DCOLORVALUE或D3DXCOLOR来表示光线的颜色 环境光(Ambient Light)经其它表面反射到达物体表面,并照亮整个场景,通常用做较低代价的粗略模拟. 漫射光(Diffuse Light)沿着特定的方向传播,到达某个表面后将沿着各个方向均匀反射,因此从各个方向观察物体表面亮度均相同. 镜面光(Specular Light)沿着特定的方向传播,到达一表面后将沿

龙书11_chapter_4 一: GameTime解读

看龙书DX11,首先是第四章,本文对GameTime类进行解释 问:此类主要实现了什么功能? 答:Returns the total time elapsed since Reset() was called, NOT counting any time when the clock is stopped. 从渲染窗口Reset开始记时,记录总共的时间.不包括此间的pause时间. 问:关键时间接口? 答: 1. //获取频率(取决于主板 OS相关,不是CPU的主频)参考:http://www.

龙书学习笔记(二)

补线代之余抽空把第四章上色学了,之所以说之余,是因为这一章内容确实不怎么多,不过为了巩固知识,便结合刚学的上色又做了一个小程序. 首先进行回顾,这一章学到的一共有四点: 一.Direct3D中颜色用RGB(Red.Green.Blue)三元组表示,用两种结构来保存 D3DCOLOR,即unsigned long,共32位,分成4个8位项,分别保存Alpha(这玩意的作用会在第七章学到).红.绿.蓝,均在0x00~0xff之间取值(就是0~255) 通过结构体来保存(D3DXCOLOR和D3DCO

龙书常见错误解决方案

龙书简单地看了一遍,但是大部分内容只能勉强弄懂原理,一些算法只知其然而不知其所以然.不过饭还是要一口一口地吃,图形学的一些算法需要自己多多积累学习探索,早日成竹在胸.游刃有余. 龙书中例子都很经典,但是不少例子无法编译成功,下面就是一些常见的解决方案: ①将字符集改为使用多字节字符集,这样可以解决无法从“const char”转换为“LPCWSTR”问题,当然也可以在所有字符串前面加上TEXT(). ②CD3DFont也可以使用,但是编译错误会很多,比如经典的strcpy问题,以及众多类似问题.

编译原理三大经典书籍(龙书 虎书 鲸书)

1.龙书(Dragon book)  英文名:Compilers: Principles,Techniques,and Tools  作者:Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman  中文名:编译原理技术和工具   第一版龙书   第二版龙书 龙书”.龙书是Alfred V. Aho等人于1986年出版的,由于出版年代较早,其中包含部分过时的技术并且没有反映一些新的编译技术.新编的<编译原理>抛弃诸如算符优先分析等过时技术,增加面向对象编译.类型检查等新