我对DX11的理解和简化框架与快速游戏制作(续)

本文探讨了作者对DirectX 11的理解,强调了显卡在处理2D和3D内容中的作用,以及如何设计类型无关性的程序框架。作者通过整理DX11的数据类型,如Buffer、Resource、变量和运算指令,提出了自己的设计原则,例如Texture和Mesh类的设计,以及使用OCTREE进行碰撞检测。此外,还提到了相机、Input类和场景管理的重要性,并分享了如何在C++和C#之间实现代码复用。最后,展示了程序的渲染效果,强调了框架的兼容性和效率。
摘要由CSDN通过智能技术生成

 网上关于DX11的文章很多,tut也很容易google到,可有用的就只是些基本的功能性的介绍。其实DX11是紧跟NV的硬件而变的,微软做的就是DEBUG而已(用DX指令或称为语言来和硬件通讯)。至于OGL也做的是同样的工作。微软的范例是基本的功能语言过多的钻研或可能就是浪费生命了,你是跟不上DX的更新节奏的。我做的是打好个基本框架来适应DX、OGL的各种版本的测试包括发布应用,其中也涉及到一个用于的测试游戏范例和一个关卡编辑器。

先来看DX都干什么使的。显卡主要的工作就是显示2D图片和3D内容。它接受的数据类型只有一个“字节”或称为buffer或byte.很多人被包装后的程序弄的无所侍从,去讨论DX和OGL的性能比较之类的。还学习一些很快过时的语法。通过整理可以发现DX数据主要有几大类,1、Buffer类DX9 叫vertex/index;后来又DX10的 constant / struct buffer其实都一个意思buffer等于byte。2、resource类 texture2D/3D/Cube 一样=byte.3、变量类 指的是用户输入的浮点数据也是BYTE。4、运算指令 通过文本形式再经过编译变成机器语言来告诉显卡如何处理这些输入的数据。GSSL、openCL,HLSL和NV的编译器都是干同样的事编译出的机器语言的字节应该是完全相等的,编译后的字节排列标准由硬件厂商制定。

微软的DX输入字节的标准通过打包后的BUffer一次性传入显卡,效能在早期比OGL用CPU逐个输入要高效很多。

所以在我设计程序时就考虑到要做到程序的类型无关性,比如Texture类的制定就只是字节,无论是DX9或DX11都可以读写,存储也是一样,控制大小也很重要,尽量都转化为DDS来存储jpg就直接存了。

Mesh类比较复杂&#

不错的dx11入门教程 Tutorial 1: Setting up DirectX 11 with Visual Studio Tutorial 2: Creating a Framework and Window Tutorial 3: Initializing DirectX 11 Tutorial 4: Buffers, Shaders, and HLSL Tutorial 5: Texturing Tutorial 6: Diffuse Lighting Tutorial 7: 3D Model Rendering Tutorial 8: Loading Maya 2011 Models Tutorial 9: Ambient Lighting Tutorial 10: Specular Lighting Tutorial 11: 2D Rendering Tutorial 12: Font Engine Tutorial 13: Direct Input Tutorial 14: Direct Sound Tutorial 15: FPS, CPU Usage, and Timers Tutorial 16: Frustum Culling Tutorial 17: Multitexturing and Texture Arrays Tutorial 18: Light Maps Tutorial 19: Alpha Mapping Tutorial 20: Bump Mapping Tutorial 21: Specular Mapping Tutorial 22: Render to Texture Tutorial 23: Fog Tutorial 24: Clipping Planes Tutorial 25: Texture Translation Tutorial 26: Transparency Tutorial 27: Reflection Tutorial 28: Screen Fades Tutorial 29: Water Tutorial 30: Multiple Point Lights Tutorial 31: 3D Sound Tutorial 32: Glass and Ice Tutorial 33: Fire Tutorial 34: Billboarding Tutorial 35: Depth Buffer Tutorial 36: Blur Tutorial 37: Coming Soon... DirectX 10 Tutorials: Tutorial 1: Setting up DirectX 10 with Visual Studio Tutorial 2: Creating a Framework and Window Tutorial 3: Initializing DirectX 10 Tutorial 4: Buffers, Shaders, and HLSL Tutorial 5: Texturing Tutorial 6: Diffuse Lighting Tutorial 7: 3D Model Rendering Tutorial 8: Loading Maya 2011 Models Tutorial 9: Ambient Lighting Tutorial 10: Specular Lighting Tutorial 11: 2D Rendering Tutorial 12: Font Engine Tutorial 13: Direct Input Tutorial 14: Direct Sound Tutorial 15: FPS, CPU Usage, and Timers Tutorial 16: Frustum Culling Tutorial 17: Multitexturing and Texture Arrays Tutorial 18: Light Maps Tutorial 19: Alpha Mapping Tutorial 20: Bump Mapping Tutorial 21: Specular Mapping Tutorial 22: Render to Texture Tutorial 23: Fog Tutorial 24: Clipping Planes Tutorial 25: Texture Translation Tutorial 26: Transparency Tutorial 27: Reflection Tutorial 28: Screen Fades Tutorial 29: Water Tutorial 30: Multiple Point Lights Tutorial 31: 3D Sound Tutorial 32: Glass and Ice Tutorial 33: Fire Tutorial 34: Billboarding Tutorial 35: Depth Buffer Tutorial 36: Blur Tutorial 37: Coming Soon... DirectX 10 Terrain Tutorials: Tutorial 1: Grid and Camera Movement Tutorial 2: Height Maps Tutorial 3: Terrain Lighting Tutorial 4: Terrain Texturing Tutorial 5: Color Mapped Terrain Tutorial 6: Quad Trees Tutorial 7: Coming Soon... 。。。。。。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值