上次介绍了如何初始化Direct3D,这次手写一次初始化代码,都是一样的方式不过看起来整洁一点。 创建一个Win32空项目添加一个空类增加以下代码即可.

#include "CreateDevice.h"
#include <d3d9.h>#pragma region 初始化函数
CreateDevice::CreateDevice()
{
}CreateDevice::~CreateDevice()
{
}#pragma endregionLPDIRECT3D9 g_pD3D;
LPDIRECT3DDEVICE9    g_pd3dDevice;HRESULT InitD3D(HWND hWnd)
{if (NULL == (g_pD3D = Direct3DCreate9(D3D_SDK_VERSION)))return E_FAIL;D3DPRESENT_PARAMETERS d3dpp;ZeroMemory(&d3dpp, sizeof(d3dpp));d3dpp.Windowed = TRUE;//不是全屏d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;if (FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp, &g_pd3dDevice))){return E_FAIL;}return S_OK;
}//渲染s
VOID Render()
{if (NULL == g_pd3dDevice)return;g_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255, 255, 0), 1.0f, 0);if (SUCCEEDED(g_pd3dDevice->BeginScene())){//渲染
g_pd3dDevice->EndScene();}g_pd3dDevice->Present(NULL, NULL, NULL, NULL);
}//释放
VOID Cleanup()
{if (g_pd3dDevice != NULL){g_pd3dDevice->Release();}if (g_pD3D != NULL){g_pD3D->Release();}
}LRESULT WINAPI MsgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{switch (msg){case WM_DESTROY:Cleanup();PostQuitMessage(0);return 0;case WM_PAINT:Render();ValidateRect(hWnd, NULL);return 0;}return DefWindowProc(hWnd, msg, wParam, lParam);
}INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, INT)
{//1.注册窗口类WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC,MsgProc, 0L, 0L, GetModuleHandle(NULL), NULL, NULL,NULL, NULL, "D3D Tutorial", NULL };RegisterClassEx(&wc);//2.用注册的窗口类创建窗口HWND hWnd = CreateWindow("D3D Tutorial", "D3D Tutorial",WS_OVERLAPPEDWINDOW, 100, 100, 300, 300, NULL, NULL, wc.hInstance, NULL);//3. 初始化D3Dif (SUCCEEDED(InitD3D(hWnd))){//显示和刷新窗口
        ShowWindow(hWnd, SW_SHOWDEFAULT);UpdateWindow(hWnd);MSG msg;//消息循环while (GetMessage(&msg, NULL, 0, 0)){TranslateMessage(&msg);DispatchMessage(&msg);}UnregisterClass("D3D Tutorial", wc.hInstance);return 0;}}

项目下载地址: http://yunpan.cn/cHnpK9vFhQ2p9  访问密码 a518

转载于:https://www.cnblogs.com/plateFace/p/4854060.html

DirectX 初始化DirectX(手写和红龙书里面的方式)相关推荐

  1. 框架手写系列---javassist修改字节码方式,实现美团Robust热修复框架

    本文用javassist方式,模拟美团Robust插件的前置处理:用插入代码的方式,针对apk中的每个方法都插入一段静态代码判断语句,用于控制是否启用热修复fix(也就是动态加载patch包到原apk ...

  2. 使用kNN算法实现简单的手写文字识别

    0. 介绍 kNN,即k-Nearest Neighbor(k近邻算法), 简介可参考KNN的一些总结. 本文是<机器学习实战>一书第二章的例子, 主要利用kNN实现简单的手写文字识别. ...

  3. 大学计算机手写笔记,法国大学教师发电脑禁令,研究显示:手写记笔记成绩更佳...

    到底要不要禁止学生上课用电脑?这个问题在法国大学引发了热烈争论.为了能够让这一代"容易分心"的年轻人更专注于课堂听讲,老师们运用了一些新策略. 大学教师发出禁令 "我对自 ...

  4. 手写一个线程池,带你学习ThreadPoolExecutor线程池实现原理

    摘要:从手写线程池开始,逐步的分析这些代码在Java的线程池中是如何实现的. 本文分享自华为云社区<手写线程池,对照学习ThreadPoolExecutor线程池实现原理!>,作者:小傅哥 ...

  5. 合合信息新推出反光消除技术,助力手写文字识别更精准

    近期,合合信息旗下扫描全能王推出液晶手写板(简称"手写板"),为用户带来仿真.流畅的书写绘画体验,一同发布的还有扫描全能王APP的新功能"拍手写板".该功能可帮 ...

  6. 有没有手写转文字软件?这三个软件很好用

    在数字化时代,我们对便捷性和效率的需求日益增长.传统的手写文字已经逐渐被电子化的方式取代,使得信息的记录和传递变得更加便利.手写字电子化是指将我们书写的纸质文字转化为电子格式,从而实现文字识别和数字化 ...

  7. 【Visual C++】游戏开发笔记三十三 浅墨DirectX提高班之二 化腐朽为神奇:DirectX初始化四步曲

    这篇文章里,我们将迈出精通DirectX的第一步,先了解典型Direct3D程序的书写流程,然后学习COM接口的对象的一些思想,然后按照"四步曲"的思路,系统地学习DirectX的 ...

  8. 【Visual C++】游戏开发笔记三十三 浅墨DirectX提高班之二 化腐朽为神奇:DirectX初始化四步曲...

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接:http://blog.csdn.net/zhmxy555/article/details/8197792 作者:毛星云(浅墨) ...

  9. 【Visual C++】游戏开发笔记三十三 浅墨DirectX提高班之二 化腐朽为神奇 DirectX初始化四步曲

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接:  http://blog.csdn.net/zhmxy555/article/details/8197792 作者:毛星云(浅 ...

  10. DirectX 12 3D游戏开发实战 -- 龙书随书源码各章项目运行结果概览

    DirectX 12 3D游戏开发实战 -- 龙书随书源码各章项目运行结果概览 第1章 向量运算 第2章 矩阵运算 第4章 Direct3D初始化 第6章 利用Direct3D绘制几何体Box 第7章 ...

最新文章

  1. 《精解Windows8》——2.6 Windows应用商店
  2. 汇编语言笔记14-端口
  3. CodeForces 213 E
  4. [pytorch、学习] - 5.5 卷积神经网络(LeNet)
  5. 【2016计概A期末】照亮房间
  6. CF1612G Max Sum Array
  7. mysql的条件语句_mysql条件语句
  8. sql无法写入mysql_windows7 sqlserver2012 无法写入受保护的内存 解决办法
  9. MyBatis深入(2)-项目结构
  10. ​搞懂微服务,从捕捉一头野猪说起
  11. 联合国超10万名员工记录遭泄露
  12. Ubuntu 16.04 安装 Apache, MySQL, PHP7
  13. 电池供电设备增加高精度库仑计
  14. 固定资产管理系统php源码,固定资产管理系统源代码
  15. RecyclerView使用中遇到的问题
  16. dtcms分页含多个参数,多个参数分页
  17. 武田呈报mobocertinib的最新结果,进一步证实EGFR外显子20插入+ mNSCLC患者的临床收益
  18. 如何听懂画外音-《用事实说话》:听懂“暗语”,让沟通透明化
  19. 后盾网php微博系统,后盾网thinkphp5.0 博客系统实现
  20. linux中文显示为乱码

热门文章

  1. 怎么打散铺铜_怎么做绵软香甜的黑米糕,不加酵母,加鸡蛋和一碗黑米粉一搅拌...
  2. 里氏替换原则_趣谈设计模式之里氏替代原则
  3. js base64编码_使用psd.js将PSD转成SVG -- 基础篇(文字amp;图片)
  4. 《Python编程实战:运用设计模式、并发和程序库创建高质量程序》—— 2.7 代理模式...
  5. XML的DTD和Schema约束
  6. CentOS 安装完成后的配置
  7. bash脚本基础概念注意点
  8. Android 实现书籍翻页效果
  9. 2-14 DataTimePicker控件
  10. 【官方方法】ROS源