Direct3D9初始化-------VB6编程学习DX9游戏编程DirectX9编程2D小游戏源码冷风引擎CoolWind2D游戏引擎(6)

Direct3D9初始化

你在网上搜索“Direct3D9初始化”,不得不说文章真多,但是VB6的似乎找不到。这里讲解一下DX9在VB6中的初始化。
Direct3D9初始化步骤如下:
首先,初始化用于创建 Direct3D 设备的 D3DPRESENT_PARAMETERS 结构的值。
D3DPRESENT_PARAMETERS是一个数据结构,是学习DX9的很重要的一项内容,当然,具体参数什么的,大家先看看,了解一下就可以了。

这是C++的语法,

typedef struct D3DPRESENT_PARAMETERS {
   
  UINT                BackBufferWidth;
  UINT                BackBufferHeight;
  D3DFORMAT           BackBufferFormat;
  UINT                BackBufferCount;
  D3DMULTISAMPLE_TYPE MultiSampleType;
  DWORD               MultiSampleQuality;
  D3DSWAPEFFECT       SwapEffect;
  HWND                hDeviceWindow;
  BOOL                Windowed;
  BOOL                EnableAutoDepthStencil;
  D3DFORMAT           AutoDepthStencilFormat;
  DWORD               Flags;
  UINT                FullScreen_RefreshRateInHz;
  UINT                PresentationInterval;
} D3DPRESENT_PARAMETERS, *LPD3DPRESENT_PARAMETERS;

这里简单的解释一下,如下图所示,更多的介绍大家可以去巨硬官方站点查找。
D3DPresent数据结构
那么在VB6里怎么使用呢?
假设有一个窗口,我们将其作为显示输出设备,比如游戏窗口Form1。那么在VBDX9BAS里就可以定义如下代码:

    Public CWD3D9 As Direct3D9
    Public CWDpp9 As D3DPRESENT_PARAMETERS '画布
    Enum CWDisplayModel     '显示模式常量
       CW_Windowed = 1 '窗口化
       CW_FullScreen = 0 '全屏
    End Enum
    
   '初始化DX9 
Public Sub CWVBDX9Initialization(ByVal Frm As Object, ByVal ScrWidth As Integer, ByVal ScrHeight As Integer, ByVal IniState As CWDisplayModel, Optional ByVal Zoom As Single = 1!)

Frm.ScaleMode = 3     '窗口显示区大小按像素计算
Frm.BorderStyle = 0
Frm.Caption = Frm.Caption
Frm.Width = ScrWidth * Zoom * 15 '保证窗口显示区符合即将初始化的引擎分辨率,防止图形失真
Frm.Height = ScrHeight * Zoom * 15

If IniState = CW_Windowed Then
    Frm.BorderStyle = 1
    Frm.Caption = Frm.Caption
End If



On Error GoTo CWIniEHD
    Set CWD3D9 = Direct3DCreate9(D3D_SDK_VERSION) '设置DX9对象
    with CWDpp9
     .BackBufferWidth = Frm.Width '后缓冲区的宽设为Form1的宽
     .BackBufferHeight 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gosub60

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值