Direct3D学习手记三:绘制彩色3D物体
2013-12-23 13:38
387 查看
本文是在上一篇的基础上做一些锦上添花的事:为物体添加色彩
原理:在设置顶点格式的时候给其一个色彩分量D3DFVF_DIFFUSE
这里重点介绍一下Diret3D里的常用灵活顶点格式
1.D3DFVF_DIFFUSE指示顶点具有颜色(DWORD,ARGB顺序)
2.D3DFVF_NORMAL指示顶点具有法向量(float nx,ny,nz)
3.D3DFVF_XYZ指示顶点坐标(float x,y,z)
4.D3DFVF_TEX1到D3DFVF_TEX8指示顶点的纹理坐标,用于贴图
必须遵循特定的定义顺序:三维坐标->法向量->颜色->纹理坐标
上次的顶点格式只为其指定了三维坐标:灵活顶点格式为D3DFVF_XYZ
此次我们只为顶点添加了色彩分量,以下即为顶点数据结构:灵活顶点格式为D3DFVF_XYZ|D3DFVF_DIFFUSE
在顶点初始化时使用宏D3DCOLOR_XRGB(r,g,b)设置颜色,如:
另外,在Setup时要设置绘制状态将光照关闭,否则仍为黑色
程序运行结果:
详细代码可以参考上一篇或者下载本次的工程文件。
源代码及工程文件下载地址:
百度网盘
原理:在设置顶点格式的时候给其一个色彩分量D3DFVF_DIFFUSE
这里重点介绍一下Diret3D里的常用灵活顶点格式
1.D3DFVF_DIFFUSE指示顶点具有颜色(DWORD,ARGB顺序)
2.D3DFVF_NORMAL指示顶点具有法向量(float nx,ny,nz)
3.D3DFVF_XYZ指示顶点坐标(float x,y,z)
4.D3DFVF_TEX1到D3DFVF_TEX8指示顶点的纹理坐标,用于贴图
必须遵循特定的定义顺序:三维坐标->法向量->颜色->纹理坐标
上次的顶点格式只为其指定了三维坐标:灵活顶点格式为D3DFVF_XYZ
//自定义顶点格式 typedef struct VERTEX { FLOAT _x,_y,_z;//三维坐标 VERTEX(FLOAT x,FLOAT y,FLOAT z) :_x(x),_y(y),_z(z){} const static DWORD FVF;//格式 }VERTEX; const DWORD VERTEX::FVF=D3DFVF_XYZ;
此次我们只为顶点添加了色彩分量,以下即为顶点数据结构:灵活顶点格式为D3DFVF_XYZ|D3DFVF_DIFFUSE
//自定义顶点格式 typedef struct VERTEX { FLOAT _x,_y,_z;//三维坐标 DWORD _color;//顶点颜色 VERTEX(FLOAT x,FLOAT y,FLOAT z,DWORD color) :_x(x),_y(y),_z(z),_color(color){} const static DWORD FVF;//格式 }VERTEX; const DWORD VERTEX::FVF=D3DFVF_XYZ|D3DFVF_DIFFUSE;
在顶点初始化时使用宏D3DCOLOR_XRGB(r,g,b)设置颜色,如:
pVertices[0]=VERTEX(-1.0F,1.0F,1.0F,D3DCOLOR_XRGB(255,0,0));
另外,在Setup时要设置绘制状态将光照关闭,否则仍为黑色
//关闭光照,否则仍为黑色 g_pd3dDevice->SetRenderState(D3DRS_LIGHTING,FALSE);
程序运行结果:
详细代码可以参考上一篇或者下载本次的工程文件。
源代码及工程文件下载地址:
百度网盘
相关文章推荐
- Direct3D学习手记二:绘制简单3D物体
- Introduction to 3D Game Programming with DirectX 11学习笔记 6 Direct3D中的绘制(二)顶点着色器
- Introduction to 3D Game Programming with DirectX 11学习笔记 6 Direct3D中的绘制(三)像素着色器
- Introduction to 3D Game Programming with DirectX 11学习笔记 6 Direct3D中的绘制(一)
- Introduction to 3D Game Programming with DirectX 11学习笔记 6 Direct3D中的绘制(四)渲染状态
- Direct3D学习(一):3D Sierpinski镂垫绘制
- OpenGL学习笔记3 —— 绘制3D物体、鼠标交互、反向变换
- DirectX绘制物体时物体表面纯色无3D效果的解决方案
- 3D游戏基础 Direct3D(四) 固定管线绘制图元
- Direct3D学习手记九:字体
- Opencv学习之寻找和绘制物体的凸包
- Direct3D 9学习笔记(9)文本绘制
- Direct3D 9学习笔记(4)基本顶点绘制呈现
- Direct3D学习手记六:深度
- Direct3D学习手记十一:网格二【从.x文件中加载网格】
- DirectX 11游戏编程学习笔记之7: 第6章Drawing in Direct3D(在Direct3D中绘制)(重点回顾+勘误)
- (三)unity 3D 学习-按名称、标签访问其它物体
- (三)卷积递归深度学习在3D物体分类中的应用(译文)
- Direct3D学习手记七:Alpha融合技术
- opengl学习笔记3-1-在3D中绘制点