【D3D11 SDK】Direct3D 11, Tutorial 01~03

本系列的Tutorial源代码及示例均来自Microsoft DirectX SDK (June 2010)里的Samples。在学习Direct3D 11的过程中,产生了些许感悟,以此开篇记录下学习过程。

P.S.本博客非教程,估计只有笔者自己看得懂,搜教程的各位如果看不懂就不要在这浪费时间了。。。

 

Tutorial 01: Direct3D 11 Basics

 

Q1.创建资源,使用资源

a) Device创建资源。(device是啥?对窗口程序来说就是整个窗口!对全屏程序来说就是屏幕!)

b) Immediate Context(device context的一种)渲染到buffer。(device context是啥?就是可以画图的地方。对窗口程序来说,就不包括边框)

c) Swap chain有front buffer, back buffer。

d) D3D11CreateDeviceAndSwapChain()的时候,其实造了三样东西:device,deviceContext, swapchain。

 

Q2.Front buffer只可读。Device使用deviceContext渲染到back buffer。

 

Tutorial 02: Rendering a Triangle

 

Q3.xxxview

xxx是资源,它配套的view可以理解为一个指针,指向xxx的部分或全部资源。

从swap chain获取backbuffer,然后用这个backbuffer在device创建render target view,然后把这个render target view绑定到device context,这样才能让pipeline通过render target view渲染到backbuffer。(只是因为在人群中多看了你一眼~这一眼要用“造”的)

 

Q4.OpenGL里,VBO的layout是通过glVertexAttribArray等来设置的;DX里,VBO的layout是要让device来造的,设置好layout后,把该layout set到device context。

 

Q5. DX的VBO和它的layout一样,要先造(当然是通过device来造啦),然后再让device context来设。造buffer时,要传两个描述性结构:一个D3D11_BUFFER_DESC描述buffer,一个D3D11_SUBRESOURCE_DATA描述数据。

 

Q6. VBO将所有数据随他送到GPU端,然后shader到VBO里拿数据。(而不是到CPU来拿数据!)

 

Q7. 设置拓扑,DX不像OGL在Draw的时候指定(glDrawArrays(GL_TRIANGLES, ...)),而是通过device context来指定D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST或者D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP等,方法是调用IASetPrimitiveTopology()。

 

有了IndexBuffer就可以用DrawIndexed()。就像OpenGL里有了EBO就可以用glDrawElement()。

 

Q8. DX在渲染每个物体前调用了VSSetShader()和PSSetShader()。相当于OpenGL里的glUseProgram()。

 

Q9. 光栅化resterization: 将三角形转化为pixel。

 

Tutorial 03: Shaders

 

Q10. Vertexshader, pixelshader的输出去向:back to pipeline.

 

Tutorial 04: 3D Spaces

 

Q11. Constant buffer:就是OpenGL里的uniform buffer。

在vertex buffer里如下声明:

cbuffer ConstantBuffer : register( b0 )
{
	matrix World;
	matrix View;
	matrix Projection;
}

未完待续。。。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值