3D图形学编程基础-基于Direct3D11-学习记录(三)纹理的使用

每个笔记的介绍内容是跟着教材书走的,这次记录的是纹理的使用环节

单靠修改每个顶点的属性来描绘整个世界显然是不太科学的,消耗太大了,所以就用到了纹理。 简单的来说,纹理就是把2D图片运用到了3D中,给3D模型贴上一个图片。

知识一:纹理坐标

因为纹理是2D的,模型是3D的,需要一个3D到2D的转换。在DX中贴图的左上角为顶点,u轴向右,v轴向下,其中u和v的取值范围是0~1。意思是不管贴图大小是64*64,还是256*256,图片中心点的纹理坐标都是(0.5,0.5)。(纹理坐标系,也称为纹理空间)


要添加纹理坐标的话,顶点的结构体,数据,以及描述就需要修改了

struct SimpleVertex
{
    XMFLOAT3 Pos;
    XMFLOAT2 Tex;<span style="white-space:pre">				</span>//纹理坐标
};

D3D11_INPUT_ELEMENT_DESC layout[] =
    {
        { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
        { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 },//纹理坐标描述,注意格式为<span style="font-family: Arial, Helvetica, sans-serif;">DXGI_FORMAT_R32G32_FLOAT</span>

    };


知识二:纹理的创建和使用

纹理数据通常从图像文件中读取到一个ID3D11Texture2D的对象中,但是纹理资源不能直接绑定在管线上(立即执行上下文中),需要为纹理资源创建一个资源视图,然后将试图绑定至上下文(后台缓存也是这样的)

通过书,代码示例等发现三种用法:

第一种:

第一步:调用D3DX10CreateTextureFromFile来读取图像文件,并创建一个ID3D11Texture2D的对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值