【Visual C++】游戏开发笔记之一——API函数、DirectX的关键系统

【DirectX】 同时被 3 个专栏收录
33 篇文章 18 订阅


本系列文章由@浅墨_毛星云 出品,转载请注明出处。  

文章链接: http://blog.csdn.net/poem_qianmo/article/details/7318264

作者:毛星云(浅墨)    邮箱: happylifemxy@163.com 

------------------------------------------------------------------------------------------------------------------------------

浅墨历时一年为游戏编程爱好者锻造的入门宝典《逐梦旅程:Windows游戏编程之从零开始》

如果你喜欢浅墨写的【Visual C++】游戏开发系列博客文章,那么你一定会爱上这本书。

这是浅墨专门为热爱游戏编程的朋友们写的入门级游戏编程宝典。



------------------------------------------------------------------------------------------------------------------------------



在从第一节开始看这个笔记系列的话,大家会发现,一上来就开始讲DirectX相关的内容但是写了几节之后,又开始讲

GDI了。

这是因为我写完前几节后,发觉直接讲DirectX有些生硬。最后我想了一下,应该先梳理完GDI相关的重点知识,再来讲

DirectX,毕竟游戏编程里面windows API是基础。所以先讲windows API,接着介绍DirectX,最后讲解游戏引擎的设

,这样会自然得多。


                                                                                               ————浅墨于2012年3月26日注




很多朋友在评论中都谈到了GDI的效率问题。关于GDI,我想在这一系列文章的篇首简单的说明一下。

用GDI做游戏的效率很低,非常的不推荐。但是GDI作为windows与生俱来的渲染引擎,在图形方面是一个全能的存在。

学习游戏编程如果想打好一个坚实的基础,掌握GDI是非常有必要的,全能的GDI可以在DirectX尚未做好准备的时候,以一个

强大后援的姿态,在游戏的测试与仿真过程中给予我们莫大的帮助


                                                                                              ————浅墨于2012年4月26日注




很多朋友也谈到游戏开发中是否运用MFC的困惑,我也在这里简单的说明一下。由于MFC有底层代码的隐蔽性等特点,且MF

C毕竟封装了很多实际上没用到的东西,不利于游戏开发的效率和游戏的运行速度,不适合做游戏开发。MFC做游戏地图编辑

器之类的工具软件倒是比较适合。我觉得一款成功的游戏最基本的特点就是具有流畅的用户体验,这个要求达不到的话,其他

方面就不用考虑了。


 

                                                                                                      ————浅墨于2012年4月27日注



 

在浅墨没更新文章的这三个月里,数百位需要游戏编程相关资料的朋友在博客里留了邮箱,没有及时给大家发到邮箱里浅墨表示非常抱歉。在这里,浅墨最终还是决定把这些资料打包上传到CSDN下载频道,这样大家就可以直接下载,省去了浅墨发邮件的功夫,虽然浅墨一直认为这样更亲切更真诚。当然,0资源分下载是必须的。

以后大家想要这些资料,就不用再留邮箱了,直接点链接去下载就好了。

 

下面是这些资料的一个清单(零编程基础开始):

 

1.《C++ primer中文版》

2.《Windows程序设计第五版》

3.《VC++深入详解》

4.《Windows核心编程》

5.《Effective STL中文版》

6.《Windows游戏编程大师技巧》

7.《DIRECTX.9.0.3D游戏开发编程基础》

 

这个书单是从零编程基础开始的,其中部分书中涉及到了DirectDraw与Direct3D 8,这两个API在新版本DirectX SDK中都被移除了,现在基本上无用武之地,所以涉及到DirectDraw与Direct3D 8的那部分就不用仔细看了哈。

本来还有《VC++深入详解》的高清影印版,以及《游戏编程精粹》系列的7本书,以及几本C++系列的经典之作,但是它们块头比较大,浅墨目前这个号在CSDN下载频道只有110Mb的上传限权,传起来比较麻烦。暂时就不传了。 

 

下面给出游戏开发学习资料的下载链接

 

请点击这里下载:零基础游戏编程学习资料by浅墨

 

(免责声明:浅墨在这里只是进行了电子版的收集工作,如果大家觉得这些书还不错,建议去买纸质版,毕竟这样对眼睛的健康有好处,健康是金钱买不来的)

 

                                                                                                             ————浅墨于2012年11月07日

 

关于学完DirectX,我们该干什么。

浅墨觉得,历代DirectX龙书的作者Frank Luna在龙书忽视了非常重要的一方面内容的讲解,那就是就是学完了DirectX我们接着该做什么。

这大概是很多怀揣游戏开发梦想的热血青年们曾经思考过的问题。

 

浅墨也曾经在这问题上迷茫过,也因为没人指明前路而走了不少弯路。

不过后来在黑暗中不断地摸索,将荆棘变成坦途之后,终于摸索出了一条正确的道路。

也就是看完龙书《DIRECTX.9.0.3D游戏开发编程基础》之后,我们需要如何学习,来把学到的知识立体化,最终转化为开发游戏的实际能力。首先我们需要再看一本书,《Real-Time Rendering》,也就是(RTR)实时渲染技术,目前出到第三版了。(这本书并没有中文版,大家如果要走游戏开发的道路,读完龙书之后,剩下基本上都要靠读英文书了。)

学完龙书,也可以选择自己喜欢的游戏引擎来接触并掌握了。看完龙书后浅墨首推学习Irrlight,然后进阶推荐Orge。两者都是开源游戏引擎,都有着源代码提供下载学习,而且网上对这两种引擎的研究热情很高,资料丰富,引擎代码字里行间都是哲思,掌握其中的代码并纳为己用,自己写出像样的游戏demo来是不成任何问题的。


 

                                                                                                  ————浅墨于2012年12月02日




玄灵隐士童鞋提到了一个应该是大家比较关心的问题,在这里集中说明下。 他的问题原文是:
'作者您好,请问这本书和您的博客里发表的《【Visual C++】游戏开发笔记》系列文章之间是什么关系?是互为补充?
还是说这本书已经包含了您之前写的所有文章然后又扩充了一些东西?‘
而我的回答是:
嗯,这本书吸收了我之前写的所有《【Visual C++】游戏开发笔记》系列文章的精华之处,然后又扩充了很多重要的东西,
内容更加的翔实, 内容架构更加的合理,还加入了更多接地气的,时代前沿的和方便入门游戏开发的知识点。:)
————浅墨 于2014年1月19日注,来自《 【浅墨著作】《逐梦旅程:Windows游戏编程之从零开始》勘误&配套源代码下载 》一文



附一张浅墨写的书的封面照吧,为了可以帮到大家更快的入门,浅墨花费一年时间,编写了这本融入了自己这些年来游戏开发经验之谈的零基础游戏编程入门书。这梦幻的封面也是浅墨自己设计的呢。:D

 


附上这本书的勘误和源代码下载,书本维护博文的传送门:

【浅墨著作】《逐梦旅程:Windows游戏编程之从零开始》勘误&配套源代码下载
 




嗯,穿越回来吧,如下是这篇博文最初版本时的内容:


作为visual C++,DirectX入门的第一讲,概念性东西比较多,这里我们只是简单的整理一下知识框架,给大家一个大概的认知体系,

后续文章中,我们会展开进行深入的讲解。



1.DirectX的定义

首先,我们必须了解DirectX的定义。DirectX,(Direct eXtension,简称DX)是由微软公司创建的多媒体编程接口。由C++编程语言实现,遵循COM。被广泛使用于Microsoft Windows、Microsoft Xbox和Microsoft Xbox 360电子游戏开发,并且只能支持这些平台。最新版本为DirectX 11,创建在最新的Windows 7上。Microsoft DirectX 是这样一组技术:它们旨在使基于Windows 的计算机成为运行和显示具有丰富多媒体元素(例如全色图形、视频、3D 动画和丰富音频)的应用程序的理想平台。DirectX 包括安全和性能更新程序,以及许多涵盖所有技术的新功能。应用程序可以通过使用DirectX API 来访问这些新功能。


2.必要的工具和开发环境

要进行游戏的开发,我们必须拥有一套最新的DirectX SDK(软件开发包)。我们可以从微软的官方下载站进行下载然后安装,这里贴出地址,http://msdn.microsoft.com/zh-cn/directx/aa937788.aspx。当然我们还要拥有开发环境,我们选择Microsoft公司的Visual Studio 2010。



3.引擎设计概述

游戏引擎是一系列高级代码,我们可以以它为基础开发自己的游戏。现代的游戏引擎已经对使用他的人隐藏了底层实现的细节和规范。例如,可以在OpenGL和Direct3D的基础上开发渲染引擎,这样,引擎用户就不需要知道使用的是哪一个渲染引擎,尽管也用到了一些底层的东西。

游戏引擎包括:渲染引擎,物理引擎,声音引擎等。游戏引擎本身只是一个由更小的引擎组成的集合。游戏引擎或它涵盖的内容并没有一个精确的定义。

对于视频游戏而言,它的游戏引擎至少要包含渲染引擎和输入引擎,这是必须的,否则,就不能称其为交互式游戏。

游戏程序员和游戏引擎程序员完成的是两种不同的工作。游戏程序员只与开发游戏的游戏引擎打交道,而游戏引擎程序员要开发出其他人用于开发游戏的引擎。


4.游戏引擎中的几个关键系统

游戏引擎中的几个关键系统有:游戏渲染系统,输入系统,声音系统,物理系统,动画系统,人工智能(AI)系统等。


5. DirectX API函数

DirectX的API主要由DirectGraphics,DirectInput,DirectPlay,DirectMusic,DirectSound组成。每个API之间相互独立,负责完成DirectX内核中不同的功能。DirectX中每个API都可以通过硬件加速,这意味着这些API可以直接和运行软件的底层硬件对话。下面是各种API函数的概要解释。

DirectGraphics:

DirectGraphics为负责向屏幕渲染二维图形和三维图形的DirectX API,也就是众所周知的Direct3D。

DirectInput:

DirectInput是可以直接使用所有与计算机关联的输入设备的DirectX API。这些设备包括键盘,鼠标和游戏控制器设备。

DirectPlay:

DirectPlay是控制Direct中网络功能的Direct API。DirectPlay可以让应用程序对机器进行网络功能设置,从而可以通过和其他网络玩家交流。

DirectMusic:

DirectMusic是负责普通声音处理的DirectX API。

DirectSound:

DirectSound是负责高级声音处理的DirectX API。


6.动手写一个窗口

在Windows中使用Direct3D创建Win32窗口非常简单。要创建一个Win32窗口就必须拥有一个WinMain()函数(这不是废话是什么)。我们可以在MSDN中查到WinMain()的标准句法

int WINAPI WinMain(          

HINSTANCE hInstance,

    HINSTANCE hPrevInstance,

    LPSTR lpCmdLine,

    int nCmdShow

);

当程序第一次运行时,WinMain()函数中的所有参数从系统获取自己的相应参数值。通过在WinMain函数内部创建一个类型为WNDCLASSSEX的窗口类对象,创建窗口,然后显示窗口,然后进行消息循环,就可以实现一个空窗口的显示。具体实现代码如下:


下面是上面讲的框架代码,也是后面的笔记二的基础,需要结合笔记二一起看。

LRESULT WINAPI MsgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
   switch(msg)
      {
         case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
            break;
      }
   return DefWindowProc(hWnd, msg, wParam, lParam);
}
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE prevhInst, LPSTR cmdLine, int show)
{
 WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L,
                     hInst, NULL, NULL, NULL, NULL,
                     "AppClass", NULL };
  
 RegisterClassEx(&wc);
   // Create the application's window
             HWND hWnd = CreateWindow(WINDOW_CLASS, WINDOW_NAME, 
WS_OVERLAPPEDWINDOW,
        100, 100, 640, 480, NULL, NULL,
                            hInst ,NULL);
         ShowWindow(hWnd, SW_SHOWDEFAULT);
         UpdateWindow(hWnd);
         // Enter the message loop
         MSG msg;
         ZeroMemory(&msg, sizeof(msg));
         while(msg.message != WM_QUIT)
            {
               if(PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE))
                  {
                     TranslateMessage(&msg);
                     DispatchMessage(&msg);
                  }
               else
                  {     
//Do something to the screen
 }    
      }
   // Unregister our window.
   UnregisterClass("AppClass", wc.hInstance);
   }






发现大家都在留言中说要推荐一下游戏开发相关的书籍,我这里就把各个阶段(从零基础开始)的推荐教程列出来吧,平时我写这个系列的笔记就参考了下面的很多书籍,大家感兴趣的话,可以深入去学习(推荐去买实体书,这样就不用整天盯着电脑屏幕看伤害眼睛,健康是金钱买不来的):

第一阶段 ,首先是C++的精通。推荐《C++ Primer》,之后 《Effect C++》

第二阶段, 熟悉windows下的编程。推荐看《Windows程序设计》。

第三阶段,Visual C++的学习。推荐的书目有孙鑫老师的《VC++深入详解》和孙鑫老师的vc视频教程。以及侯俊杰老师的《MFC深入详解》,与时俱进的有《Visual C++2010入门经典》。
(第二阶段和第三阶段可以结合着来学习,有很多知识是相辅相成的,并没有什么大的界限。)

第四阶段,开始学习专门介绍游戏开发的教程(有DirectX和OpenGL两条路可选,这里我们选择DirectX,DirectX在国内为主流。具体比较请移步最近刚写的这篇文章 【Visual C++】游戏开发笔记十九 DirectX与OpenGL的博弈),推荐书籍为《DirectX 9.0 3D游戏开发编程基础》(封面为一个红龙的),《Windows游戏编程大师技巧》,《Direct3D游戏开发技术详解》等等,当然这类教程就比较多了,新出的有很多,DirectX相关的层出不穷,也可以选择刚发行不久的新书,毕竟上面讲的知识比较前沿与更具成熟性。(依然感谢liusofttech  
的指出,为什么我没有推荐专门讲解3D编程数学基础的教程。我没有专门指出来,是因为几乎每一本Direct3D教材里面都有一章到几章有关必备数学基础知识的讲解。我觉得单独来学数学基础没必要,费时且费力,我们只要在Direct3D或者OpenGL教材里掌握相关的数学知识,那就足够了。)


还有什么经典的书籍,欢迎大家交流补充~~
(有一位兄弟提到,《游戏编程精粹》系列的书也比较经典,都是从事游戏开发多年的全球顶尖游戏工程师的肺腑之言,虽然经常会有个别错误- -,目前出了8本了,大家可以去看看)
 
 



以上就是本节笔记的全部内容。


更精彩的内容,且看后面的笔记系列。



感谢一直支持【Visual C++】游戏开发笔记系列专栏的朋友们,也恳请大家继续关注我的专栏。

【Visual C++】游戏开发 系列文章才刚刚展开一点而已,因为游戏世界实在是太博大精深了~

但我们不能着急,得慢慢打好基础。做学问最忌好高骛远,不是吗?


浅墨希望看到大家的留言,希望与大家共同交流,希望得到睿智的评论(即使是批评)。

你们的支持是我写下去的动力~


精通游戏开发的路还很长很长,非常希望能和大家一起交流,共同学习,共同进步。

大家看过后觉得值得一看的话,可以顶一下这篇文章,你们的支持是我继续写下去的动力~

如果文章中有什么疏漏的地方,也请大家指正。也希望可以多留言来和我探讨相关的问题。

最后,谢谢你们一直的支持~~~



The end


相关推荐
<p> 1本课程是一个干货课程,主要讲解如何封装服务器底层,使用Tcp/ip长连接,IDE使用vs2019 c++开发以及使用c++11一些标准,跨平台windows和linux,服务器性能高效,单服务器压力测试上万无压力,服务器框架是经历过上线产品验证,框架简单明了,不熟悉底层封装人,半个小时就能完全掌握服务器框架上手写业务逻辑。 </p> <p> 2本课程是一个底层服务器框架教程,主要是教会学员在windows或linux下如何封装一个高效,避免踩坑商业级框架,服务器底层使用初始化即开辟内存技术,使用内存池,服务器运行期间内存不会溢出,非常稳定,同时服务器使用自定义哈希hashContainer,在处理新连接,新数据,新封包,以及解包,发包,粘包过程,哈希容器性能非常高效,增改永远不会随着连接人数上升而降低性能,增复杂度永远都是恒定O(1)。 </p> <p> 3服务器底层封装没有使用任何第三方网络库以及任何第三方插件,自由度非常高,出了任何BUG,你都有办法去修改,查找问题也非常方便,在windows下使用iocp,linux下使用epoll. </p> <p> 4讲解c++纯客户端,主要用于服务器之间通信,也就是说你想搭建多层结构服务器,服务器与服务器之间使用socket通信。还可以使用c++客户端做压力测试,开辟多线程连接服务器,教程提供了压力测试,学员可以自己做压力测试服务器性能。 </p> <p> 5赠送ue4和unity3d通信底层框架以及多人交互demo,登录,注册,玩家离开,同步主要是教会学员服务器与客户端如何交互。 </p> <p> 6赠送c++连接mysql数据库框架demo,登录,注册,玩家离开数据持久化. </p> <p> 7服务器教程使用自定义通信协议,同时也支持protobuf,选择权在开发者自己手里,想用什么协议都可以,自由度高。 </p> <p> 8服务器教程使用手动敲代码逐句讲解方式开展教学课程。非喜勿喷,谢谢大家。 </p> <p> 9服务器教程提供源码,大家可以在平台提供地址下载或者联系我,服务器使用c++11部分标准,std::thread,条件变量,线程锁,智能指针等,需要学员具备一定c++知识,购买前请慎重考虑。 </p> <p> <br /> </p> <p> <br /> </p> <p> <br /> </p> <p> <br /> </p> <p> <br /> </p> <p> <br /> </p>
<p> <span> </span> </p> <h3 class="ql-long-26664262"> <p style="font-size:13pt;"> <span> </span> </p> <div class="ql-long-26664262"> <span style="color:#337FE5;font-size:14px;">为什么学Python</span> </div> <p> <span><span style="font-weight:400;"><strong></strong></span></span> </p> <p style="font-size:13pt;"> <span style="color:#494949;font-weight:normal;font-size:14px;">Python 是当今非常热门语言之一,2020年 TIOBE 编程语言排行榜中 ,Python名列第一,并且其流行度依然处在上升势头。</span> </p> </h3> <p> <img alt="" src="https://img-bss.csdnimg.cn/202006020826291344.png" /><span style="font-size:14px;"></span> </p> <p> <span style="color:#494949;font-size:14px;">在2015年时候,在网上还经常看到学Python还是学R讨论,那时候老齐就选择了Python,并且开始着手出版《跟老齐学Python》。时至今日,已经无需争论。Python给我们带来,不仅仅是项目上收益,我们更可以从它“开放简洁”哲学观念中得到技术发展路线启示。</span> </p> <p> <br /> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <span style="font-size:14px;">借此机会,老齐联合CSDN推出了本课程,希望能影响更多人走进Python,踏入编程大门。</span> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <span style="font-size:14px;"><br /> </span> </p> <p> <span> </span> </p> <h3 class="ql-long-26664262"> <p> <span style="color:#337FE5;"><span style="font-size:14px;color:#337FE5;">课程设计</span></span> </p> <p style="font-size:12pt;"> <span style="font-size:14px;color:#494949;font-weight:normal;"><br /> </span> </p> <p style="font-size:12pt;"> <span style="font-size:14px;color:#494949;font-weight:normal;">本课程共包含三大模块:</span> </p> </h3> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <strong class="ql-author-26664262 ql-size-12"><span style="color:#000000;font-size:14px;"><br /> </span></strong> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <strong class="ql-author-26664262 ql-size-12"><span style="color:#000000;font-size:14px;">一基础知识篇</span></strong> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <span style="font-size:14px;">内置对象和基本运算语句,是Python语言基础。本课程在讲解这部分知识时候,不是简单地将各种知识做简单堆砌,而是在兼顾内容全面性同时,更重视向学习者讲授掌握有关知识方法,比如引导学习者如何排查错误如何查看和理解文档等。</span> </p> <p style="font-size:11pt;color:#494949;"> <span style="font-size:14px;"> </span> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <strong class="ql-author-26664262 ql-size-12"><span style="color:#000000;font-size:14px;">二面向对象篇</span></strong> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <span style="font-size:14px;">“面向对象(OOP)”是目前企业开发主流开发方式,本课程从一开始就渗透这种思想,并且在“函数”和“类”学习中强化面向对象开发方式学习——这是本课程与一般课程重要区别,一般课程只在“类”这里才提到“对象”,会导致学习者茫然失措,并生畏惧,乃至于放弃学习。本课程则是从开始以“润物细无声”方式,渗透对象概念,等学习到本部分时候,OOP对学习者而言有一种“水到渠成”感觉。</span> </p> <p style="font-size:11pt;color:#494949;"> <span style="font-size:14px;"> </span> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <strong class="ql-author-26664262 ql-size-12"><span style="color:#000000;font-size:14px;">三工具实战篇</span></strong> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <span style="font-size:14px;">在项目实战中,除了前述知识之外,还会用到很多其他工具,至于那些工具如何安装?怎么自己做工具?有那些典型工具?都是这部分内容。具体来说,就是要在这部分介绍Python标准库应用以及第三方包安装,还有如何开发和发布自己工具包。此外,很多学习Python同学,未来要么从事数据科学要么从事Web开发,不论哪个方向,都离不开对数据库操作,本部分还会从实战角度,介绍如何用Python语言操作常用数据库。</span> </p> <p> <br /> </p> <p class="16" style="margin-left:21pt;text-indent:0pt;"> <span style="color:#E53333;"></span> </p>
<p> <span style="color:#4d4d4d;">当前课程中博客项目实战源码是我在 GitHub上开源项目 My-Blog,目前已有 2000 多个 star:</span> </p> <p> <span style="color:#4d4d4d;"><img src="https://img-bss.csdnimg.cn/202103310649344285.png" alt="" /><br /> </span> </p> <p> <span style="color:#4d4d4d;">本课程是一个 Spring Boot 技术栈实战类课程,课程共分为 3 大部分,前面两个部分为基础环境准备和相关概念介绍,第三个部分是 Spring Boot 个人博客项目功能讲解,<span style="color:#565656;">通过本课程学习,不仅仅让你掌握基本 Spring Boot 开发能力以及 Spring Boot 项目大部分开发使用场景,同时帮你提前甄别和处理掉将要遇到技术难点,认真学完这个课程后,你将会对 Spring Boot 有更加深入而全面了解,同时你也会得到一个大家都在使用博客系统源码,你可以根据自己需求和想法进行改造,也可以直接使用它来作为自己个人网站,这个课程一定会给你带来巨大收获。</span></span> </p> <p> <span style="color:#4d4d4d;"><span style="color:#565656;"> </span></span> </p> <p> <span style="color:#e53333;"><span style="color:#e53333;"><strong>课程特色</strong></span></span> </p> <p> <span style="color:#e53333;"><span style="color:#e53333;"><strong> </strong></span></span> </p> <p> <span style="color:#4d4d4d;"><span style="color:#565656;"> </span></span> </p> <ol> <li> <span style="color:#565656;">课程内容紧贴 Spring Boot 技术栈,涵盖大部分 Spring Boot 使用场景。</span> </li> <li> <span style="color:#565656;">开发教程详细完整文档资源齐全实验过程循序渐进简单明了。</span> </li> <li> <span style="color:#565656;">实践项目页面美观且实用,交互效果完美。</span> </li> <li> <span style="color:#565656;">包含从零搭建项目以及完整后台管理系统和博客展示系统两个系统功能开发流程。</span> </li> <li> <span style="color:#565656;">技术栈新颖且知识点丰富,学习后可以提升大家对于知识理解和掌握,对于提升你市场竞争力有一定帮助。</span> </li> </ol> <p> <strong>实战项目预览</strong> </p> <p> <span style="color:#4d4d4d;"><span style="color:#565656;"><span style="color:#e53333;"><strong> </strong></span></span></span> </p> <p> <span style="color:#4d4d4d;"><img src="https://img-bss.csdn.net/202005150303066258.png" alt="" /><br /> </span> </p> <p>   </p> <p> <span style="color:#4d4d4d;"> </span> </p> <p> <span style="color:#4d4d4d;"><img src="https://img-bss.csdn.net/202005150305396930.png" alt="" /><br /> </span> </p> <p> <span style="color:#4d4d4d;"> </span> </p> <p> <span style="color:#4d4d4d;"><img src="https://img-bss.csdn.net/202005150305528842.png" alt="" /><br /> </span> </p> <p> <span style="color:#4d4d4d;"> </span> </p> <p> <span style="color:#4d4d4d;"><img src="https://img-bss.csdn.net/202005150306056323.png" alt="" /><br /> </span> </p>
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值