第130讲 绘制立方体

继续上一讲的内容,这一讲的东西很简单,就是在上一讲的代码里稍作修改便完成了一个立方体的绘制,效果图如下:

第130讲  绘制立方体

//===========================


//

// 使用基础几何图形创建一个立方体

//

MDx11BasicGeometry gene_geometry;

MDx11BasicGeometry::MeshData __data;

gene_geometry.CreateBox(400, 400,400,__data);

MDx11Window::MDx11MeshPointType datas;

std::vector<unsigned>indexs;

std::vector<BasicPCT>points;

points.resize(__data.vertices.size());

for (int i = 0;

i <__data.vertices.size();

++i){

points[i].Pos = __data.vertices[i].pos;

points[i].Color = XMFLOAT4(gen(), gen(), gen(), 1.0f);

points[i].Tex = __data.vertices[i].tex;

}

indexs.clear();

for (int i = 0;

i <__data.indices.size();

++i){

indexs.push_back(__data.indices[i]);

}


pLayoutManager = new MDx11LayoutManage(dx_GetDevice());

pBufferManager = new MDx11BufferManage(dx_GetDevice());

pLayoutManager->dx_FxComplieFile(“FX/MDx11WindowFX.fx”);

pTechnique  

 

= pLayoutManager->dx_GetTechFromEF(“MDx11WindowTech”);

pLayout  

 

 

 

= pLayoutManager->dx_CreatInputLayout(PCTLayout, ARRAYSIZE(PCTLayout), “MDx11WindowTech”);


pVertexBuffer = pBufferManager->dx_CreateVectexBuffer(&

points[0], points.size());

pIndexBuffer  

= pBufferManager->dx_CreateIndexBuffer(&

indexs[0], indexs.size());

mIndexNum  

 

= indexs.size();


auto it = pBufferManager->dx_CreateTexTureResouceOnly(“Res/IMG_8266.JPG”);

pLayoutManager->dx_GetShaderResourceFromEF(“MWindowTexture”)->SetResource(it);


//=============================


绘制函数不需要任何修改。但是为了更好的体验一下3D效果,我们可以让立方体旋转起来。我们只需要设置一个世界变换矩阵即可。


//=============================


staticfloat angle = 0;

angle += 0.1;

XMMATRIX word = XMMatrixRotationY(angle  

/ 180.0*mj::PI);

word *= XMMatrixRotationZ(angle  

/ 180.0*mj::PI);

word *= XMMatrixRotationX(angle  

/ 180.0*mj::PI);

pLayoutManager->dx_GetMatrixFromEF(“MWorldMatrix”)->SetMatrix(reinterpret_cast<
float*>(&

word));


//==============================


这样一来立方体就会无休止的旋转起来。

第130讲  绘制立方体

其实DirectX一旦入门之后就是自己慢慢摸索了,主要是对立体几何敏感些,对线性代数了解些就没问题啦。接下来我们可以考虑人机交互了,我们用鼠标或者键盘来控制3D物体。


//==========================

回复D查看目录,回复数字查看相应章节


有些同学问有没有博客或者什么的,毕竟微信上面的代码排版不是很好,所以自己就做了一个简单的web服务器,不过功能简陋,就只是打算在上面放点C++的文件,顺便将源码放在上面。如果有兴趣的同学可以访问下面地址:


http://2076e1b.nat123.cc:43007/


因为外网映射使用的是nat123的免费版,所以会发现下载非常的缓慢,而且可能还会下载不下来,还有由于服务器就在电脑上,平时上班家里电脑没开是没法访问网站的,不过下班后就能够访问了,O(∩_∩)O,因为我呢没做过前端,对html和css,js这些不熟悉,所以网站其实就是乱七八糟的,推荐使用win10的edge浏览器,因为实在这个浏览器上面测试的,目前发现chrome不能下载。


对于C++的东西微信里面说得比较深了些,很多同学反应太难看不懂,所以在网站上面打算多说基础。


原文始发于微信公众号(

C/C++的编程教室

):第130讲 绘制立方体

|

发表评论