directx初第二卷

初始化

添加头文件

#include <Windows.h>
#include <d3dx9.h>


声明变量

LPDIRECT3D9 g_pD3D = NULL;
LPDIRECT3DDEVICE9 g_pd3dDevice = NULL;

关键代码

//创建directx接口
if (NULL == (g_pD3D = Direct3DCreate9(D3D_SDK_VERSION)))
    return E_FAIL;

//校验硬件顶点运算
D3DCAPS9 caps; int vp = 0;
//获取设备性能参数(默认(当前使用的显卡),硬件(抽象层)设备类型,把结果存到设备信息指针)
if (FAILED(g_pD3D->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &caps)))
{
    return E_FAIL;
}
if (caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT)
    vp = D3DCREATE_HARDWARE_VERTEXPROCESSING; //支持硬件顶点运算
else
    vp = D3DCREATE_SOFTWARE_VERTEXPROCESSING; //不支持(则采用软件顶点运算)

//填充D3DPRESENT_PARAMETER结构
D3DPRESENT_PARAMETERS d3dpp;
//将指定内存清零(内存地址,内存大小)
ZeroMemory(&d3dpp, sizeof(d3dpp));
d3dpp.Windowed = TRUE; //指定以Windows窗体形式显示
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; //当前屏幕绘制后它将自动从内存中删除  
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; //后台缓冲区像素格式为当前使用的显卡的像素格式

//创建directx设备接口(默认(当前使用的显卡),硬件(抽象层)设备类型,当前窗口句柄,设备行为标识,已填充的结构,把结果存到设备指针)
if (FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
    vp,
    &d3dpp, &g_pd3dDevice)))
{
    return E_FAIL;
}

渲染

关键代码

if (NULL != g_pd3dDevice)
{
    //清空后台缓冲区(矩形数组中矩形的数量为0,无矩形数组(清空区域)指针,标识为颜色缓冲区,蓝色,像素深度值为1,像素模版值为0)
    g_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 255), 1.0f, 0); 
    //开始绘制
    if (SUCCEEDED(g_pd3dDevice->BeginScene()))
    {
        //绘制
        ....
        //结束绘制
        g_pd3dDevice->EndScene();
    }

    //翻转显示(无复制源矩形区域的指针,无复制目标矩形区域的指针,无当前绘制的窗口句柄,无最小更新区域的指针)
    g_pd3dDevice->Present(NULL, NULL, NULL, NULL); //后台渲染的东西翻转到前台
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值