Directx11教程36 纹理映射(6)
2012-04-13 15:34
295 查看
本章主要是整理代码,做以下两件事情:
1、把世界坐标矩阵的计算,放在GraphicsClass的渲染函数中,之前放在D3DClass中,而且只是返回一个单位矩阵,没任何作用。如果要使其起作用,就要对每个model类都单独设置,很麻烦,比如我要画两个颜色立方体,岂不是要建立两个model类,而只是世界坐标矩阵不同。
放在Render函数中后,我们主要通过一些D3D的矩阵变化函数来计算世界坐标系。比如:
//执行平移操作,得到最终的模型世界矩阵
D3DXMatrixTranslation(&worldMatrix1, 4.0, 0.0, 0.0);
就得到一个沿着x轴移动4个单位的世界矩阵。这样,如果要渲染多个cube,我们只需改变世界矩阵,再执行一次shader渲染就可以了。
比如下面代码,就是画2个颜色立方体:
// 把模型顶点和索引缓冲放入管线,准备渲染.
m_Model->Render(m_D3D->GetDeviceContext());
//执行平移操作,得到最终的模型世界矩阵
D3DXMatrixTranslation(&worldMatrix1, 4.0, 0.0, 0.0);
// 用shader渲染.
result = m_ColorShader->Render(m_D3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix1, viewMatrix, projectionMatrix);
if(!result)
{
return false;
}
//执行平移操作,得到最终的模型世界矩阵
D3DXMatrixTranslation(&worldMatrix1, 8.0, 0.0, 0.0);
// 用shader渲染.
result = m_ColorShader->Render(m_D3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix1, viewMatrix, projectionMatrix);
if(!result)
{
return false;
}
运行后界面如下:
2、修改PlaneModelClass,之前我们只是画了2个大三角形,现在我们改为网格的方式,这样便于纹理贴图,比如贴上草地的纹理。
完整的代码请参考:
工程文件myTutorialD3D11_29
代码下载:
http://files.cnblogs.com/mikewolf2002/d3d1127-28.zip
http://files.cnblogs.com/mikewolf2002/pictures.zip
1、把世界坐标矩阵的计算,放在GraphicsClass的渲染函数中,之前放在D3DClass中,而且只是返回一个单位矩阵,没任何作用。如果要使其起作用,就要对每个model类都单独设置,很麻烦,比如我要画两个颜色立方体,岂不是要建立两个model类,而只是世界坐标矩阵不同。
放在Render函数中后,我们主要通过一些D3D的矩阵变化函数来计算世界坐标系。比如:
//执行平移操作,得到最终的模型世界矩阵
D3DXMatrixTranslation(&worldMatrix1, 4.0, 0.0, 0.0);
就得到一个沿着x轴移动4个单位的世界矩阵。这样,如果要渲染多个cube,我们只需改变世界矩阵,再执行一次shader渲染就可以了。
比如下面代码,就是画2个颜色立方体:
// 把模型顶点和索引缓冲放入管线,准备渲染.
m_Model->Render(m_D3D->GetDeviceContext());
//执行平移操作,得到最终的模型世界矩阵
D3DXMatrixTranslation(&worldMatrix1, 4.0, 0.0, 0.0);
// 用shader渲染.
result = m_ColorShader->Render(m_D3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix1, viewMatrix, projectionMatrix);
if(!result)
{
return false;
}
//执行平移操作,得到最终的模型世界矩阵
D3DXMatrixTranslation(&worldMatrix1, 8.0, 0.0, 0.0);
// 用shader渲染.
result = m_ColorShader->Render(m_D3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix1, viewMatrix, projectionMatrix);
if(!result)
{
return false;
}
运行后界面如下:
2、修改PlaneModelClass,之前我们只是画了2个大三角形,现在我们改为网格的方式,这样便于纹理贴图,比如贴上草地的纹理。
完整的代码请参考:
工程文件myTutorialD3D11_29
代码下载:
http://files.cnblogs.com/mikewolf2002/d3d1127-28.zip
http://files.cnblogs.com/mikewolf2002/pictures.zip
相关文章推荐
- Directx11教程40 纹理映射(10)
- Directx11教程(32) 纹理映射(2)
- Directx11教程(42) 纹理映射(12)-简单的bump mapping
- Directx11教程(43) 纹理映射(13)-动态纹理映射
- Directx11教程(33) 纹理映射(3)
- Directx11教程(35) 纹理映射(5)
- Directx11教程37 纹理映射(7)
- Directx11教程(34) 纹理映射(4)
- Directx11教程38 纹理映射(8)
- Directx11教程41 纹理映射(11)
- Directx11教程(31) 纹理映射(1)
- Directx11教程39 纹理映射(9)
- opengl 教程(16) 纹理映射
- ArchieOpenGL基础教程第八课:创建3D图形和纹理映射(MFC/SDI)
- OpenGL教程之纹理映射
- 【Qt OpenGL教程】15:图形字体的纹理映射
- OpenGL教程之纹理映射
- 【DirectX11】第六篇 纹理映射
- NeHe OpenGL教程 第六课 纹理映射
- 【Visual C++】游戏开发笔记四十一 浅墨DirectX教程之九 为三维世界添彩:纹理映射技术(一)