VB6编程:DirectX 2D图形学习日志1创建一个全屏窗口

2020/12/11:从今天开始学习DirectX 2D图形编程,从0基础开始,希望能坚持下去。有兴趣一起学习的小伙伴可以关注我,当我有一周以上的时间没有发文,请发帖给我鼓鼓劲,毕竟自学编程是一件很辛苦的事,特别是我的学历很低,工作也很无聊:因为是学校保安吗,不学点什么似乎不符合氛围。(毕竟学校里边从上到下都是需要学习的人,无论是学生还是老师,甚至保安,似乎除了打扫卫生的或者食堂的阿姨)
学习目的:①找个感兴趣又花费金钱不大且消磨时间的事做做(避免整天玩手机游戏!) 。
②编个自己写的简单游戏。
编程语言:VB6
图形工具:DX8
系统:WIN7 64
教程作者:Jacob Roman
翻译:gosub60@163.com QQ:127644712
教程下载地址:https://download.csdn.net/download/gosub60/13696651
第一个DirectX8应用程序:DirectX8的窗口化源码
打开VB6,启用一个标准程序,窗口的名称改为:frmMain,引用一下DX8的控件(dx8vb.dll)
下边是源码:(CSDN编辑器里似乎没有VB6的代码块选择,因此用的.NET的代码块选择,但源码是VB6的,请注意!)

Option Explicit

Private DirectX8 As DirectX8 '主DirectX对象。
Private Direct3D As Direct3D8 '控制3D一切。
Private Direct3D_Device As Direct3DDevice8 '表示硬件渲染。

Private Running As Boolean '帮助确定主游戏循环是否正在运行。

Private Sub Form_Activate()

    Dim Display_Mode As D3DDISPLAYMODE '显示模式说明。
    Dim Direct3D_Window As D3DPRESENT_PARAMETERS 'Backbuffer和视口说明。

    frmMain.Caption = "DirectX教程:第一个窗口化实例"
    
    Set DirectX8 = New DirectX8 '创建DirectX对象。
    Set Direct3D = DirectX8.Direct3DCreate() '使用DirectX对象创建Direct3D对象。
    
    
    Direct3D.GetAdapterDisplayMode D3DADAPTER_DEFAULT, Display_Mode '使用您当前使用的显示模式
                                                                     '已经在。 如果您感到困惑,我是
'                                                                     在谈论您当前的屏幕分辨率。 ;)
    
    Direct3D_Window.Windowed = True '该应用程序将处于窗口模式。
    Direct3D_Window.SwapEffect = D3DSWAPEFFECT_COPY_VSYNC '监视器运行时刷新。
    Direct3D_Window.BackBufferFormat = Display_Mode.Format '设置检索到后缓冲区中的格式。
    
    '使用一些有用的信息以及信息创建渲染设备
     '我们已经设置了Direct3D_Window。
    Set Direct3D_Device = Direct3D.CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, frmMain.hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, Direct3D_Window)

    Running = True '全部初始化。 现在可以激活游戏循环了。

    Do While Running = True
        
        DoEvents '允许事件发生,以便程序不会锁定。
        
        '------------------------------------------------- ---
         'DirectX会自动为您处理帧速率
         '这使其运行(最多)与监视器一样快
'         刷新率高,因此您无需在其中添加额外的代码
'         降低循环速度并以一定数量的帧运行
         '每秒。
         '------------------------------------------------- ---
        
        '清除后缓冲区。
        Direct3D_Device.Clear 0, ByVal 0, D3DCLEAR_TARGET, D3DColorRGBA(0, 0, 0, 0), 1#, 0
        
            '渲染代码在这里,但是在本教程中,它现在是空的。
        
         '将后缓冲区翻转到窗体窗口中。
        Direct3D_Device.Present ByVal 0, ByVal 0, 0, ByVal 0
        
    Loop

End Sub

Private Sub Form_Unload(Cancel As Integer)

    Running = False '帮助程序退出游戏循环。
    
    '卸载所有DirectX对象
    
    Set Direct3D_Device = Nothing
    Set Direct3D = Nothing
    Set DirectX8 = Nothing
    
    Unload Me '卸载窗口
    
    End '结束程序
    
   '尽管上方的Unload语句退出了程序,但是您
     '这样做后将导致自动化错误?
     'END 命令 将有助于防止这种情况,并彻底结束该应用程序。

End Sub

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值