Direct-X学习笔记--纹理映射进阶

DirectX学习笔记(七):Direct3D纹理映射技术详解及实现 前言:  如果我们想要将一个正方体绘制成一个板条箱的样式,那么我们就需要D3D中的纹理映射技术。纹理是一个像素矩阵,它可以被映射到三角形单元,以此来该变物体的显示样式。这样就可以增加所绘制场景的真实感。 1.纹理坐标: 阅读详情

之前学习了纹理映射相关知识,但是仅仅是知道读取一个纹理贴图,然后在绘制之前设置一下纹理,但是并不知道纹理设置的一些具体细节,今天就来填坑啦!


一.四种纹理寻址方式

我们读取一个纹理图片,最好的情况是所需要的图片大小和图片本身的大小一致,但是事实往往不是这么美好。所以当纹理图片的大小和我们所绘制的模型大小不一致时,就需要通过不同的纹理寻址方式来解决这个问题。
通常,我们取的纹理坐标为(0.0f, 1.0f),这个纹理坐标刚好对应图片的大小。而现在,我们要把纹理坐标变大,即变成大于1的值,而大于1的部分就是下面我们要学习的纹理寻址方式管辖的范围啦。

四中纹理寻址方式分别为:
1)重复寻址模式(wrap texture address mode)
2)镜像纹理寻址模式(mirror texture address mode)
3)夹取寻址模式(clamp texture address mode)
4)边框颜色寻址模式(border color texture mode)
下面分别看一下四中寻址方式。

先来一张正常的纹理图片,我们绘制了一个正对摄像机的平面,平面共有四个点,设置为有一组纹理的灵活顶点格式:

然后我们修改一下之前玩过无数次的定点格式,把纹理坐标的最大值由1.0改为2.0:
//顶点数据
	vertex[0] = stVertex(-250.0f,   0.0f, 0.0f, 0.0f, 2.0f);
	vertex[1] = stVertex(-250.0f,   500.0f, 0.0f, 0.0f, 0.0f);
	vertex[2] = stVertex( 250.0f,   0.0f, 0.0f, 2.0f, 2.0f);
	vertex[3] = stVertex( 250.0f,   500.0f, 0.0f, 2.0f, 0.0f);
这样,一张图片就不能完整的覆盖住模型啦,我们的纹理寻址方式就要派上用场啦!

注意,寻址方式的设定在u,v两个方向是可以分别设定的!

关于设置,我们可以通过DX的一个API---SetSamplerState函数来设定。
第一个参数是纹理的层数,一共不是可以有8层纹理嘛,如果只用第一层的话,直接设置为0就好啦。
第二个参数为u,v方向,分别为D3DSAMP_ADDRESSU,或者D3DSAMP_ADDRESSV即可
第三个参数为纹理寻址方式,如下:
typedef enum D3DTEXTUREADDRESS {
 D3DTADDRESS_WRAP          = 1,   //重复寻址模式
 D3DTAD
Direct-X学习笔记--纹理映射 一.介绍 之前学习了怎样绘制物体,还画了个DX自带的茶壶,然而这个东东并不怎么好看....离我们现实的物体简直相隔千里。只能说像美术他们用来写生的模型...那么要怎么样才能让我们的东西看起来更像真实的物体呢?这个就要用到今天学习的纹理映射技术了... 纹理映射(Texture Mapping),又称纹理贴图,是将纹理空间中的纹理像素映射到屏幕空间中的像素的过程。简单来说,就是把一幅图像贴到三 阅读详情

相关推荐

Direct-X学习笔记--地形

地形系统,在游戏中肯定少不了滴。终于要开始学习这个东东啦!地形看起来非常神奇,绵延的山峦,横看成岭侧成峰,远近高低各不同,这么复杂的地形到底我们到底要怎么写呢?说实话不学这个之前我真的完全想不到地形的实现方法。 一.简介 三维地形系统在很多地方都有应用,不论是游戏还是模拟系统中,地形都是必不可少的元素之一。说到地图,我们最容易想到的就是一个二维数组,根据数组元素的不同,绘制出不同的图形

puppet_master的专栏 2291

DX9 中的纹理贴图

用于学习交流,一个完整的贴图,及放大缩小

DIRECT 全局优化算法 matlab程序 (附带帮助文档,包括多个例子)

DIRECT 算法是由 Jones 等人提出的一种确定性全局优化算法特别适用于具有确定变量空间的函数寻优。 DIRECT 优化算法 matlab程序 特点: 1、附带帮助文档,原理解释清晰可靠 2、该算法全局改进带约束

SMIC Memory配置与Library Compiler实战:从lib到db的高效转换

本文详细介绍了SMIC Memory Compiler的配置要点与使用Library Compiler将.lib文件高效转换为.db文件的完整流程。文章深入解析了关键配置参数对性能和面积的影响,并提供了从交互式操作到自动化脚本的实战指南,帮助数字芯片设计工程师顺利完成存储器模型的生成与集成,确保Design Compiler能正确调用。

weixin_28314575的博客 335

R语言新手也能搞定!WGCNA分析全流程代码详解(附常见报错解决方案)

本文为R语言新手提供了WGCNA分析的完整代码流程与实战指南。从环境配置、数据准备、软阈值选择、网络构建到模块-表型关联分析,逐步详解核心步骤。重点针对安装依赖、内存不足等常见报错提供了具体解决方案,帮助初学者避开陷阱,顺利完成加权基因共表达网络分析。

terraform7cloud的博客 539

R语言pls包实战:手把手教你用偏最小二乘(PLS)搞定高维数据回归(附完整代码与数据标准化避坑指南)

本文详细介绍了如何使用R语言的pls包进行偏最小二乘(PLS)回归分析,特别针对高维数据回归问题。通过完整的代码示例和数据标准化避坑指南,帮助读者掌握从数据预处理到模型优化的全流程,解决实际应用中的常见问题。

weixin_42662605的博客 350

LiveKit 本地部署实战:从零搭建安全实时通信环境(Caddy+HTTPS)

本文详细介绍了如何从零开始搭建LiveKit本地部署环境,结合Caddy服务器实现HTTPS安全通信。通过环境准备、证书生成、服务配置到前端客户端集成的完整流程,帮助开发者快速构建实时音视频应用,特别适合需要安全实时通信的场景。

weixin_29227585的博客 676

BurpSuite实战:5分钟搞定DVWA的CSRF漏洞测试(附详细截图)

本文详细介绍了如何使用BurpSuite在DVWA靶场中进行CSRF漏洞测试,包括环境配置、攻击原理剖析、分步攻击演示及企业级防御方案。通过实战案例,帮助读者深入理解CSRF漏洞的危害与防护措施,提升Web应用安全防护能力。

weixin_30879169的博客 493

专题一:Labview表格控件 及 应用(三)在表格中插入一行数据

专题一:Labview表格控件 及 应用(三) 在表格中插入一行数据 最近一段时间,做试验台上位机编程,老是用到表格控件,这几天抽时间专门写一个表格控件的专题。有用到的朋友可以参考一下。 今天接着讲一下,表格控件的数据插入,和相关的操作 1.表格控件的数据插入原理: 表格控件是一个 2D 字符串数组。 在表格插入一行,就是在2D数组插入一行。 行、列插入类似** 以下以成绩录入为例说明 2.1 不要表头直接插入 知识点1:创建数组:把数学,语文,英语三个数值,连成一个一位数组(数值型)。 知

Labview十年工控_702老师的博客 1万+

【异常】claude : 无法将“claude”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径

如果claude方式1(临时):使用完整路径运行,比如:# Windows 批处理脚本示例 C:\你的脚本目录\claude . bat # PowerShell 脚本示例 C:\你的脚本目录\claude . ps1方式2(永久):将脚本所在文件夹添加到系统 PATH 环境变量(参考场景1的环境变量配置步骤),之后即可直接输入claude运行。错误核心原因:系统 PATH 环境变量中找不到claude对应的可执行文件/脚本。

奶爸的编程之路,也就一周冷个三天 3669

Zephyr内核——内存管理——内存堆

Zephyr提供了一组允许线程动态分配内存。

wayne2018的博客-心情驿站 771

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: C++那些细节--static关键字
下一篇: 《Effictive C++》读书笔记(一)
puppet_master
puppet_master 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄12年 2695粉丝 161原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值