原文:Direct3D纹理映射

更详细的文章:DirectX中的纹理映射相关技术 (转)

 
创建纹理对象
1: HRESULT CreateTexture(
 2:   UINT Width,//宽度
 3:   UINT Height,//高度
 4:   UINT Levels,//多级渐进纹理序列级数
 5:   DWORD Usage,//用途
 6:   D3DFORMAT Format,//像素格式
 7:   D3DPOOL Pool,//内存池类型
 8:   IDirect3DTexture9** ppTexture,//创建的纹理对象指针
 9:   HANDLE* pSharedHandle//保留值,恒为0
10: );
1: HRESULT D3DXCreateTextureFromFile(
2:   LPDIRECT3DDEVICE9 pDevice,//D3D设备对象接口
3:   LPCTSTR pSrcFile,//图片路径
4:   LPDIRECT3DTEXTURE9 * ppTexture//返回生成的D3D纹理对象指针
5: );
纹理过滤方式
·Nearest-point sampling(最近点采样)
·Linear texture filtering(线性纹理过滤)
·Anisotropic texture filtering(各向异性纹理过滤)
·Texture filtering with mipmaps(多级渐进纹理过滤)
D3DTEXF_POINT 取距离最近的像素的颜色,适用于纹理与图元的大小相近时
D3DTEXF_LINEAR 对上下左右4个纹理元素进行加权平均
D3DTEXF_ANISOTROPIC 对映射点周围方形8个或更多的像素进行取样,获得平均值后映射到像素点上
D3DSAMP_MIPFILTER 采用不同分辨率的纹理序列
 
游戏中常见的三种方式:
·Bilinear Interpolation (双线过滤D3DTEXF_LINEAR)
这种处理方式较适用于有一定景深的静态影像,不过无法提供最佳品质。其最大问题在于,当三维物体变得非常小时,一种被称为Depth Aliasing artifacts(深度赝样锯齿),也不适用于移动中的物件。
·Trilinear Interpolation (三线过滤D3DSAMP_MIPFILTER+ D3DTEXF_LINEAR)
一个“双线过滤”需要三次混合,而“三线过滤”就得作七次混合处理,所以每个像素就需要多用21/3倍以上的计算时间。还需要两倍大的存储器时钟带宽。但是“三线过滤”可以提供最高的贴图品质,会去除材质的“闪烁”效果。对于需要动态物体或景深很大的场景应用方面而言,只有“三线过滤”才能提供可接受的材质品质。
·Anisotropic Interpolation (各向异性过滤D3DTEXF_ANISOTROPIC)
它在取样时候,会取8个甚至更多的像素来加以处理,所得到的质量最好。
可以与线性纹理过滤和多级渐进纹理过滤结合使用.一般来说4X以上才有效果
 
纹理寻址模式
当纹理坐标在[0.0, 1.0]范围之外时的情况
 
1.       Wrap texture address mode(重叠)
2.       Mirror texture address mode(镜像)
3.       Clamp texture address mode(夹取)
4.       Border color texture address mode(边框颜色)
纹理阶段混合
颜色混合,纹理混合,Alpha混合,还有个凹凸映射?

纹理包装
Texture Wrapping,改变D3D光栅器使用纹理坐标对有纹理的多边形进行光栅化操作的基本方式.
U,V纹理包装的使用会影响D3D在U,V方向上对纹理坐标间最短线的选取.
上图中的U方向上的包装使AB之间的纹理坐标内插操作就穿越了0.0和1.0所在的交界线.
可以用纹理包装来做环境映射(现在通常都是用Cubemap吧?)略过

【转载】Direct3D纹理映射的更多相关文章

  1. Direct3D 纹理映射

    纹理映射是将2D的图片映射到一个3D物体上面,物体上漂亮图案被称为纹理贴图, 一个表面可以支持多张贴图等等,下面简单介绍下纹理贴图 纹理贴图UV: 贴图是一个个像素点组成,每一个像素点都由一个坐标最后 ...

  2. Direct3D 11 Tutorial 7:Texture Mapping and Constant Buffers_Direct3D 11 教程7:纹理映射和常量缓冲区

    概述 在上一个教程中,我们为项目引入了照明. 现在我们将通过向我们的立方体添加纹理来构建它. 此外,我们将介绍常量缓冲区的概念,并解释如何使用缓冲区通过最小化带宽使用来加速处理. 本教程的目的是修改中 ...

  3. Direct3d 设备丢失 (device lost) (转载)

    转:http://blog.csdn.net/kuangfengwu/article/details/7674074 1.什么时候设备丢失 一个Direct3D设备, 有两种状态: 操作状态或丢失状态 ...

  4. 【转载】Direct3D HLSL介绍(上)

    原文路径:http://www.csharpwin.com/csharpspace/3087.shtml 写过Direct3D程序的朋友们可能还记得,在以往,大家常为如何表现更多真实的材质(如玻璃.金 ...

  5. 【转载】Direct3D基础知识

    原文:Direct3D基础知识 重新从头开始学习DX,以前太急于求成了,很多基础知识都没掌握就开始写程序了,结果出了问题很难解决.   1.       D3D体系结构 D3D与GDI处与同一层次,区 ...

  6. 【转载】OLE控件在Direct3D中的渲染方法

    原文:OLE控件在Direct3D中的渲染方法 Windows上的图形绘制是基于GDI的, 而Direct3D并不是, 所以, 要在3D窗口中显示一些Windows中的控件会有很多问题 那么, 有什么 ...

  7. 学习opengl十大网站(转载)

    [转载] 1.http://nehe.gamedev.net/这个是我觉得全世界最知名的OpenGL教程,而且有网友将其中48个教程翻译成了中文http://www.owlei.com/Dancing ...

  8. 【转】OpenGL超级宝典笔记——纹理映射Mipmap

    原文地址 http://my.oschina.net/sweetdark/blog/177812 , 感谢作者,若非法转载请联系本人. 目录[-] Mipmapping Mipmap过滤 构建Mip层 ...

  9. 【译】Import Changes from Direct3D 11 to Direct3D 12

    译者:林公子 出处:木木的二进制人生 转载请注明作者和出处,谢谢! 这是微软公布的Direct3D 12文档的其中一篇,此翻译留作学习记录备忘,水平有限,错漏难免,还望海涵. 原文链接是https:/ ...

随机推荐

  1. github air项目中遇到的几个问题及解决(nodejs居多)

    https://github.com/cambecc/air 1.按照github中给出的步骤,执行到npm install,项目中的package.json包含了要安装的包的版本,但是安装的时候,p ...

  2. TTransport 概述

    TTransport TTransport主要作用是定义了IO读写操作以及本地缓存的操作,下面来看TIOStreamTransport是如何实现的. public abstract class TTr ...

  3. InputStream TO byte

    public class ByteToInputStream { public static final InputStream byte2Input(byte[] buf) { return new ...

  4. C/C++——存储

    关于各内存空间: 栈(stack):变量,数组.栈的大小是2M(也有的是1M),反正不大,一般递归写错了,没有出口,都会报错stack overflow. 全局区(静态区):全局变量.数组,静态变量. ...

  5. E、CSL 的魔法 【模拟】 (“新智认知”杯上海高校程序设计竞赛暨第十七届上海大学程序设计春季联赛)

    题目传送门:https://ac.nowcoder.com/acm/contest/551#question 题目描述 有两个长度为 n 的序列,a0,a1,…,an−1a0,a1,…,an−1和 b ...

  6. [Java123] JDBC and Multi-Threading 多线程编程学习笔记

    项目实际需求:DB交互使用多线程实现 多线程编程基础:1.5  :( (假设总分10) 计划一个半月从头学习梳理Java多线程编程基础以及Oracle数据库交互相关的多线程实现 学习如何通过代码去验证 ...

  7. 2、Android-UI(常用控件)

    2.1.如何编写程序页面 Android中有许多编写程序的方式可供选择 Android Studio和Eclipse中都提供了响应的可视化编辑器 可以直接再进行拖动创建布局 推荐使用手动编写方式进行开 ...

  8. Java Calendar and SimpleDateFormat 时间模块

    package UtilTest; import java.util.Calendar; import java.text.SimpleDateFormat; import org.apache.co ...

  9. ovs加dpdk出现EAL No free hugepages reported in hugepages-1048576kB

    问题 打开ovs的日志: cat /etc/local/var/log/openvswitch/ovs-vswichd.log 其中一条显示: 2018-07-30T02:12:05.443Z|000 ...

  10. PHP介绍(PHP入门1)

    BS架构和CS架构 B:Browser:浏览器 S:Server:服务器 C:Client:客户端 BS 浏览器和服务器的关系,通过浏览器来访问服务器,比如:百度.新浪... 优点:只要有浏览器就能访 ...