#include "stdafx.h"
#include "Homework20190222.h"
#define MAX_LOADSTRING 100
// 全局变量:
HINSTANCE hInst; // 当前实例
WCHAR szTitle[MAX_LOADSTRING]; // 标题栏文本
WCHAR szWindowClass[MAX_LOADSTRING]; // 主窗口类名
// 此代码模块中包含的函数的前向声明:
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
LPDIRECT3D9 p_D3d=nullptr; //接口对象
LPDIRECT3DDEVICE9 p_Dve = nullptr; //设备对象
void initD3D9(HWND hWnd); //初始化D3D设备
void RenderScene(); //构建场景
LPD3DXMESH p_Box1 = nullptr; //盒子一的MESH
LPD3DXMESH p_Box2 = nullptr; //盒子二的MESH
D3DXMATRIX boxMat1; //盒子一的矩阵
D3DXMATRIX boxMat2; //盒子二的矩阵
//创建盒子模型
void CreateBoxModel(float angle, D3DXMATRIX *box, LPD3DXMESH &p_Box);
//绘制盒子模型
void DrawBoxModel(D3DXMATRIX *box, LPD3DXMESH &p_Box,float angle,int rotationAngle);
//设置视口
void SetupView();
//旋转
void Rotation(float angle,D3DXMATRIX *box,int rotationAngle);
//移动
void Translate(D3DXMATRIX *box, float x, float y, float z);
//设置光线
void SetupLight();
//矩形窗口
RECT clientRect;
//释放D3D环境
void releaseD3D()
{
p_Box1->Release();
p_Box2->Release();
p_D3d->Release();
p_Dve->Release();
}
void InitD3D(HWND hWnd)
{
//获取D3D接口对象
p_D3d = Direct3DCreate9(D3D_SDK_VERSION);
//设备信息对象
D3DCAPS9 caps9;
//顶点加速
int vp;
//设置设备适配器
p_D3d->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &caps9);
if (caps9.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT)
{
vp = D3DCREATE_HARDWARE_VERTEXPROCESSING; //顶点硬件加速运算
}
else
{
vp = D3DCREATE_SOFTWARE_VERTEXPROCESSING;//顶点软件加速运算
}
//获取窗口可绘区
GetClientRect(hWnd, &clientRect);
//窗口宽高
int w = clientRect.right - clientRect.left;
int h = clientRect.bottom - clientRect.top;
//设置D3D详细属性
D3DPRESENT_PARAMETERS d3dpp;
//内存初始化
ZeroMemory(&d3dpp, sizeof(d3dpp));
//缓冲区大小
d3dpp.BackBufferWidth = w;
d3dp
directX9 绘制盒子的旋转,移动,缩放,灯光及材质
最新推荐文章于 2019-10-25 11:41:21 发布