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