- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE5 / NUMPAGES5
Direct3D 10教程7:纹理映射和常量缓存
概览
在前面的教程中我们介绍了光照,现在我们将在立方体上添加纹理。我们还会介绍常量缓存的概念,以及如何通过最小化带宽的方式利用常量缓存加速处理过程。
这个教程介绍如何在立方体上施加纹理。
这个教程包含了Direct3D 10中的基本概念,以后的教程通过介绍DXUT、网格加载和shader的示例扩展这些概念。
源代码
(SDK root)\Samples\C++\Direct3D10\Tutorials\Tutorial07
纹理映射
纹理映射表示将一张2D图像映射到3D几何体上。我们可以把它想象成包装一个礼物盒,即将一张包装纸覆盖在一个盒子上。要做到这点,我们需要指定几何体表面上的点是如何对应2D图像的。
诀窍是将正确地将纹理对齐到模型的坐标上。对于复杂的模型,很难手动确定纹理的坐标,因此,3D建模工具通常会输出带有纹理坐标信息的模型。因为本示例是??个立方体,所以很容易确定匹配纹理的坐标。纹理坐标是在顶点中定义的,然后会在表面的单个像素间进行插值。
从纹理创建一个Shader Resource
纹理是一张从文件获取的2D图像,用于创建一个shader资源视图(shader-resource view),因此它可以从shader中读取。
hr = D3DX10CreateShaderResourceViewFromFile( g_pd3dDevice, Lseafloor.dds, NULL, NULL,
g_pTextureRV, NULL );
定义坐标
我们必须首先定义立方体每个顶点的纹理坐标才能将图像映射到立方体上。因为图像尺寸不定,因此使用的坐标系统被调整到[0, 1]区间。纹理的左上角对应(0,0),右下角对应(1,1)。
本例中,我们让整个纹理覆盖在立方体的每个面上。你也可以将纹理展开到所有六个面,虽然这样做的话坐标的定义会变得难一些,纹理可能会变形。
首先,我们需要更新结构体使之包含纹理坐标。
struct SimpleVertex
{
D3DXVECTOR3 Pos; // Position
D3DXVECTOR2 Tex; // Texture Coordinate
};
然后,更新输入结构使之也包含坐标信息。
// Define the input layout
D3D10_INPUT_ELEMENT_DESC layout[] =
{
{ LPOSITION, 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0,
D3D10_INPUT_PER_VERTEX_DATA, 0 },
{ LTEXCOORD, 0, DXGI_FORMAT_R32G32_FLOAT, 0, 12,
D3D10_INPUT_PER_VERTEX_DATA, 0 },
};
因为输入结构发生了变化,对应的顶点着色器也需进行调整。
struct VS_INPUT
{
float4 Pos : POSITION;
float2 Tex : TEXCOORD;
};
最后,就可以在顶点中包含纹理坐标了。第二个参数类型为D3DXVECTOR2,包含了纹理坐标。立方体的每个顶点对应纹理的一个角,这样就创建了一个非常简单的映射,每个顶点的纹理坐标为(0,0)或(0,1)或(1,0)或(1,1)。
// Create vertex buffer
SimpleVertex vertices[] =
{
{ D3DXVECTOR3( -1.0f, 1.0f, -1.0f ), D3DXVECTOR2( 0.0f, 0.0f ) },
{ D3DXVECTOR3( 1.0f, 1.0f, -1.0f ), D3DXVECTOR2( 1.0f, 0.0f ) },
{ D3DXVECTOR3( 1.0f, 1.0f, 1.0f ), D3DXVECTOR2( 1.0f, 1.0f ) },
{ D3DXVECTOR3( -1.0f, 1.0f, 1.0f ), D3DXVECTOR2( 0.0f, 1.0f ) },
{ D3DXVECTOR3( -1.0f, -1.0f, -1.0f ), D3DXVECTOR2( 0.0f, 0.0f ) },
{ D3DXVECTOR3( 1.0f, -1.0f, -1.0f ), D3DXVECTOR2( 1.0f, 0.0f ) },
{ D3DXVECTOR3( 1.0f, -1.0f, 1.0f ),
您可能关注的文档
- 4.工商与税务数据交换.doc
- 4.当代社会建设第一二讲.ppt
- 4.虽有槁暴,不复挺者,輮使之然也。-人人通空间.ppt
- 4015《管理信息系统》复习题.doc
- 411招标公告附件.doc.doc
- 4元数据结构概况.doc
- 4加工余量.ppt
- 4构建分布式网络教学服务管理系统.doc
- 4键盘的使用(七年级教案).ppt
- 4.第四课题编程软件的使用(第三课题,第四课题任选一).doc
- 2025年浙江省林业局部分直属事业单位高层次人才(博士)岗位招聘笔试备考题库及参考答案详解1套.docx
- 2025年河北民族师范学院博士研究生选聘50人笔试备考题库及参考答案详解1套.docx
- 2025年浙江宁波高新区卫生系统招聘高层次人才5人笔试备考题库带答案详解.docx
- 2025年湖北监利市事业单位招聘221人笔试高频难、易错点备考题库及完整答案详解1套.docx
- 2025年海南省国兴中学招聘6人笔试备考题库及参考答案详解一套.docx
- 2025年浙江宁波市镇海区招聘事业编制教师69人(中学岗位)笔试备考题库带答案详解.docx
- 2025年海南省健康宣传教育中心招聘事业编制人员笔试高频难、易错点备考题库及完整答案详解1套.docx
- 2025年浙江台州临海市自然资源和规划局招聘编外聘用人员(二)笔试高频难、易错点备考题库参考答案详解.docx
- 2025年江西省市场监督管理局直属事业单位高层次人才招聘(40)笔试高频难、易错点备考题库含答案详解.docx
- 2025年浙江金华义乌市机关事业单位编外聘用人员招聘159人笔试备考题库及完整答案详解1套.docx
文档评论(0)