码迷,mamicode.com
首页 > 其他好文 > 详细

龙书dx9 纹理

时间:2014-12-07 01:16:08      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   ar   color   使用   sp   on   文件   

本章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模式

 

龙书dx9 纹理

标签:style   blog   http   ar   color   使用   sp   on   文件   

原文地址:http://www.cnblogs.com/dust-fly/p/4149021.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!