directX9 绘制盒子的旋转,移动,缩放,灯光及材质

#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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值