#include<d3d9.h> //Direct3D程序不需的头文件
#include<d3dx9.h>//如果要使用D3DX库就必须加入这个头文件
#include<mmsystem.h>
#include<windows.h>
#pragma comment(lib,"d3d9.lib")
#pragma comment(lib,"d3dx9.lib")
#pragma comment(lib,"winmm.lib")
//4个本程序用到的全局变量
LPDIRECT3D9 g_pD3D = NULL; //Direct3D指针
LPDIRECT3DDEVICE9 g_pD3DDevice = NULL;//Direct3D设备
LPDIRECT3DVERTEXBUFFER9 g_pVB = NULL;//顶点缓冲区指针
LPDIRECT3DINDEXBUFFER9 g_pIB = NULL;//索引缓冲区指针
//定义使用到的顶点结构
struct CUSTOMVERTEX
{
FLOAT x,y,z;
DWORD color;
};
//定义上述顶点的FVF结构
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE)
//初始化Direct3D设备过程函数
HRESULT InitD3D(HWND hWnd)
{
//创建Direct3D对象
if(NULL == (g_pD3D = Direct3DCreate9(D3D_SDK_VERSION)))
{
return E_FAIL;
}
//填写创建Direct3D设备结构体
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory(&d3dpp,sizeof(d3dpp));
d3dpp.Windowed = false;//运行在窗口模式
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;//最高效的工作方式
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;//屏幕缓冲区数据像素格式
//创建Direct3D设备
if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp,&g_pD3DDevice)))
{
return E_FAIL;
}
return S_OK;
}
//初始化与本程序绘图相关的数据函数
HRESULT InitDraw()
{
//创建顶点缓冲区
g_pD3DDevice->CreateVertexBuffer( 8 * sizeof(CUSTOMVERTEX),
D3DUSAGE_WRITEONLY,
D3DFVF_CUSTOMVERTEX,
D3DPOOL_MANAGED,
&g_pVB,
0);
//创建索引缓冲区
g_pD3DDevice->CreateIndexBuffer(36 * sizeof(WORD),
D3DUSAGE_WRITEONLY,
D3DFMT_INDEX16,
D3DPOOL_MANAGED,
&g_pIB,
0);
//创建立方体的8个顶点,注意每个顶点的颜色都不同
//在绘制时,Direct3D会根据顶点颜色对三角形内部像素进行插值,所以立方体看起来是彩色的 <
#include<d3dx9.h>//如果要使用D3DX库就必须加入这个头文件
#include<mmsystem.h>
#include<windows.h>
#pragma comment(lib,"d3d9.lib")
#pragma comment(lib,"d3dx9.lib")
#pragma comment(lib,"winmm.lib")
//4个本程序用到的全局变量
LPDIRECT3D9 g_pD3D = NULL; //Direct3D指针
LPDIRECT3DDEVICE9 g_pD3DDevice = NULL;//Direct3D设备
LPDIRECT3DVERTEXBUFFER9 g_pVB = NULL;//顶点缓冲区指针
LPDIRECT3DINDEXBUFFER9 g_pIB = NULL;//索引缓冲区指针
//定义使用到的顶点结构
struct CUSTOMVERTEX
{
FLOAT x,y,z;
DWORD color;
};
//定义上述顶点的FVF结构
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE)
//初始化Direct3D设备过程函数
HRESULT InitD3D(HWND hWnd)
{
//创建Direct3D对象
if(NULL == (g_pD3D = Direct3DCreate9(D3D_SDK_VERSION)))
{
return E_FAIL;
}
//填写创建Direct3D设备结构体
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory(&d3dpp,sizeof(d3dpp));
d3dpp.Windowed = false;//运行在窗口模式
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;//最高效的工作方式
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;//屏幕缓冲区数据像素格式
//创建Direct3D设备
if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp,&g_pD3DDevice)))
{
return E_FAIL;
}
return S_OK;
}
//初始化与本程序绘图相关的数据函数
HRESULT InitDraw()
{
//创建顶点缓冲区
g_pD3DDevice->CreateVertexBuffer( 8 * sizeof(CUSTOMVERTEX),
D3DUSAGE_WRITEONLY,
D3DFVF_CUSTOMVERTEX,
D3DPOOL_MANAGED,
&g_pVB,
0);
//创建索引缓冲区
g_pD3DDevice->CreateIndexBuffer(36 * sizeof(WORD),
D3DUSAGE_WRITEONLY,
D3DFMT_INDEX16,
D3DPOOL_MANAGED,
&g_pIB,
0);
//创建立方体的8个顶点,注意每个顶点的颜色都不同
//在绘制时,Direct3D会根据顶点颜色对三角形内部像素进行插值,所以立方体看起来是彩色的 <