我对DX11的理解和简化框架与快速游戏制作(续2)
来源:互联网 发布:淘宝大码女装微胖 编辑:程序博客网 时间:2024/05/29 16:31
下面就先讲述下如何创建第一个基于DX11的窗口程序。(这是基于我的“简化框架”的流程设计)
首先建立个名为“DX.h”的头文件,我的框架程序程序不包含任何". ccp"文件也不生成任何lib和DLL,但需要在VS的环境变量中引用它的目录。这样是为了保证与C#的语法完全相等。
在头文件中调入下面的库:
//DX11所必须
#pragma comment (lib, "dxgi.lib")
#pragma comment (lib, "d3d11.lib")
#pragma comment (lib, "d3dx11.lib")
#pragma comment (lib, "d3dcompiler.lib ")
//DX10.1---D2D所必须
#pragma comment (lib, "D3D10_1.lib")
#pragma comment (lib, "D2D1.lib")
#pragma comment (lib, "dwrite.lib")
//windows变量的使用必须
#pragma comment(lib, "winmm.lib")
在以后的工程文件中再也不需要引用以上和以下的内容了,它已经包含再全局中
#include <initguid.h>
#include <dxgi.h>
#include <D3D10_1.h>
#include <d3d11.h>
#include <d3dx11.h>
#include <d3dcompiler.h>
#include <D2D1.h>
#include <dwrite.h>
#include <windows.h>
#include <mmsystem.h>
#include <stdio.h>
#include <io.h>
#include <string>
#include <sstream>
#include <iostream>
#include <fstream>
#include <math.h>
#ifndef Kill
#define Kill(p) { if (p) { (p)->Release(); (p)=NULL; } }
#endif
#include"Device.h"//以后需要用的DX11类
#include"SwapChain.h"
现在需要创建个DX11的容器来包含DX11的一些必要的指针。任何一个DX程序都需要个DEVICE设备来指向它所关联的资源。
创建个名为"Device.h"的头文件
struct Device
{
ID3D11Device* dev;//device 设备
ID3D11DeviceContext* context;//device 资源管理
ID3D11RasterizerState* cullback;//着色模式
ID3D11RasterizerState* cullnone;
ID3D11RasterizerState* cullfront;
ID3D11DepthStencilState* stateA;//深度模式
ID3D11DepthStencilState* stateB;
ID3D11BlendState* stateC;;//混合模式
ID3D11BlendState* stateD;
ID3D11BlendState* stateE
IDXGIAdapter1 *Adapter;//显示卡
IDXGIFactory1* factory;//用于D2D的显示设备总和
HRESULT Create()//创建Device设备 {
HRESULT hr = CreateDXGIFactory1(__uuidof(IDXGIFactory1), (void**)&factory);
hr =factory->EnumAdapters1(0, &Adapter);
hr = D3D11CreateDevice(Adapter, D3D_DRIVER_TYPE_UNKNOWN, 0, D3D11_CREATE_DEVICE_BGRA_SUPPORT,0, 0, D3D11_SDK_VERSION,
&dev,0,&context);
CreateState();//创建着色和混合等预定模式
context->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST );//给显卡一个预定的基础渲染方式以避免显卡设备的丢失和黑屏。
return hr;
}
void Dispose()//必须清理程序退出后不用的资源
{
Kill(Adapter);Kill(factory); Kill(cullback);Kill(cullnone); Kill(cullfront); Kill(stateA);Kill(stateB);Kill(stateC);
Kill(stateD);Kill(stateE); context->ClearState(); Kill(context);Kill(dev);
}
这里只是建立了显示DX资源的基础的设备,以后是几乎都不会修改到这些代码也无需为每个项目都重新粘贴他们。
未完待续
以后会一步步讲述直到完成下面的游戏。。。
- 我对DX11的理解和简化框架与快速游戏制作(续2)
- 我对DX11的理解和简化框架与快速游戏制作(续)
- 我对DX11的理解和简化框架与快速游戏制作(续1)
- 我对DX11的理解和简化框架与快速游戏制作(续3)
- 我对DX11的理解和简化框架与快速游戏制作(续4)
- 我对DX11的理解和简化框架与快速游戏制作(续5)
- 我对DX11的理解和简化框架与快速游戏制作(续6)
- 我对DX11的理解和简化框架与快速游戏制作(续7)
- 我对DX11的理解和简化框架与快速游戏制作
- 支持DX11游戏对硬件的要求
- 我对分布式计算框架的理解与设计
- 我对SNS游戏的初步理解
- 我对3d游戏的理解..
- 我对快速排序的理解。
- 探讨3d游戏的制作和我对quake2--java2版本的研究
- 我对O3W框架的理解
- 浅谈我对框架的理解
- 浅谈我对框架的理解
- SmartUpload 上传文件
- js、jquery实用小技巧集合
- HDU_Steps8.3 矩阵应用 HDU1575 HDU1757 HDU2294 HDU2254 HDU2276 HDU2855 HDU3519 HDU3509
- ubuntu 安装smb共享文件夹
- 一个复习数据结构比较好的网站
- 我对DX11的理解和简化框架与快速游戏制作(续2)
- KDE 桌面环境下自定义快捷键
- 用异或来交换两个变量效率分析
- 不用中间变量交换两个double类型
- swappiness设置实际内存和swap的使用比率 /ubuntu优化
- ASP解决方案-Microsoft JET Database Engine(0x80004005)未指定错误
- C# xpath解析XML文件
- 绕过SQL注入限制的方法
- 苏曼殊,其文,其事……