Direct3D中自定义顶点的三种方式及贴图和变换处理
来源:互联网 发布:unity3d 虚拟现实漫游 编辑:程序博客网 时间:2024/05/12 05:48
格式1:
//定义顶点格式
struct Vertex
{
Vertex(){}
Vertex(float_x,float _y,float_z,float _w,float_u,float _v)
{
x=_x;y=_y;z=_z;w=_w;
u=_u;v=_v;
}
floatx,y,z,w; //顶点坐标
float u,v; //纹理坐标
};
#define D3DFVF_XYZRHW_TEX D3DFVF_XYZRHW | D3DFVF_TEX1
说明:采用D3DFVF_XYZRHW格式来确定顶点的最终坐标位置,使用此标志后3D屏幕坐标是从“左上角(0,0)开始向左和下增加到屏幕宽和高”。但有个缺点就是,不可以用SetTransform(D3DTS_WORLD,&world);函数来进行坐标变换变换,如果想变换的话应该使用下面那样的方式来变换:
m_vertices[0].position=CUSTOMVERTEX::Position(width2*(1-cos(angle)),bottom,width2*sin(angle),w);
m_vertices[1].position=CUSTOMVERTEX::Position(width2*(1-cos(angle)),top,width2*sin(angle),w);
m_vertices[2].position=CUSTOMVERTEX::Position(width2*(1+cos(angle)),bottom,-1.0f*width2*sin(angle),w);
m_vertices[3].position=CUSTOMVERTEX::Position(width2*(1+cos(angle)),top,-1.0f*left*sin(angle),w);
【PS:适合对图片进行变换,得到3D效果】
格式2:
//定义顶点格式
struct Vertex
{
Vertex(){}
Vertex(float_x,float _y,float_z ,float _u,float_v)
{
x=_x;y=_y;z=_z;
u=_u;v=_v;
}
float x,y,z; //顶点坐标
float u,v; //纹理坐标
};
#define D3DFVF_XYZRHW_TEX D3DFVF_XYZ | D3DFVF_TEX1
说明:使用“D3DFVF_XYZ” + “透视投影”方式表现3D空间中模型的变换,坐标系为“以屏幕中心为(0,0),想右和上增加,但都是小值,单位不是像素”。但这种的话,很不好确定屏幕中贴图的位置。因为,透视投影的话具有“摄像机位置”和“投影参数”,现在还不知道如何让一张贴图贴满整个屏幕,具体的顶点坐标应该为多少!但用这种方法可以很好的实现模型或者纹理图片的3D变换!【PS:适合对3D模型进行变换,不适合对图片进行变换】
贴图:满屏贴图的方法:
格式3:
//定义顶点格式
struct Vertex
{
Vertex(){}
Vertex(float_x,float _y,float_z ,float _u,float_v)
{
x=_x;y=_y;z=_z;
u=_u;v=_v;
}
float x,y,z; //顶点坐标
float u,v; //纹理坐标
};
#define D3DFVF_XYZRHW_TEX D3DFVF_XYZ| D3DFVF_TEX1
说明:使用“D3DFVF_XYZ” + “正交投影”方式表现3D空间中模型的变换,屏幕坐标系为“以屏幕中心为(0,0),向右和上增加,但单位为像素”!可以用SetTransform(D3DTS_WORLD,&world);来进行变换,但基本上得不到3D的效果,因为是“正交”方式,例如图片旋转的过程中根本不像3D效果,而是2D效果!
【PS:不适合进行3D变换】
- Direct3D中自定义顶点的三种方式及贴图和变换处理
- Direct3D顶点坐标变换
- Direct3D顶点坐标变换
- Direct3D顶点坐标变换
- Opengl中位图贴图的三种方式
- Opengl中位图贴图的三种方式
- 在Blender中通过法线贴图和顶点位移实现石块地面的凹凸感
- Direct3D的四大变换
- Direct3D学习(三):光影贴图
- direct3d顶点
- Direct3D中绘制图元的两种方式
- Direct3D学习笔记(二)——顶点坐标变换
- 实验三 傅立叶变换及图象的频域处理
- 关于Direct3D绘制的顶点顺序
- DSP添加库文件的三种方式及CCS中run和animate的区别
- C++中new失败的三种处理方式
- ios中对事件动作的三种处理方式
- Swing中添加事件响应的三种处理方式
- 门内门外看招聘
- IT旅途——程序员面试经验分享
- C程序设计课程-2012电子信息 第七次实验任务
- 编程技术面试的五大要点
- IT求职经验总结——面试和准备策略
- Direct3D中自定义顶点的三种方式及贴图和变换处理
- ATmega48/88/168 串口 proteus 仿真
- 【面试】SSH框架相关面试题
- 第7次上机作业
- activemq无法启动,端口被占用
- 装饰模式
- VFS数据结构相关关系链表图
- Android UI设计-google官方推荐
- How to Modify the Password for SYSMAN and other Enterprise Manager Users at the OMS Level and Reposi