继续上一讲的内容,这一讲的东西很简单,就是在上一讲的代码里稍作修改便完成了一个立方体的绘制,效果图如下:
//===========================
//
// 使用基础几何图形创建一个立方体
//
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效果,我们可以让立方体旋转起来。我们只需要设置一个世界变换矩阵即可。
//=============================
static float 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));
//==============================
这样一来立方体就会无休止的旋转起来。
其实DirectX一旦入门之后就是自己慢慢摸索了,主要是对立体几何敏感些,对线性代数了解些就没问题啦。接下来我们可以考虑人机交互了,我们用鼠标或者键盘来控制3D物体。
//==========================
回复D查看目录,回复数字查看相应章节
有些同学问有没有博客或者什么的,毕竟微信上面的代码排版不是很好,所以自己就做了一个简单的web服务器,不过功能简陋,就只是打算在上面放点C 的文件,顺便将源码放在上面。如果有兴趣的同学可以访问下面地址:
http://2076e1b.nat123.cc:43007/
因为外网映射使用的是nat123的免费版,所以会发现下载非常的缓慢,而且可能还会下载不下来,还有由于服务器就在电脑上,平时上班家里电脑没开是没法访问网站的,不过下班后就能够访问了,O(∩_∩)O,因为我呢没做过前端,对html和css,js这些不熟悉,所以网站其实就是乱七八糟的,推荐使用win10的edge浏览器,因为实在这个浏览器上面测试的,目前发现chrome不能下载。
对于C 的东西微信里面说得比较深了些,很多同学反应太难看不懂,所以在网站上面打算多说基础。