D3D9学习笔记之精灵变换篇
内容:
- 如何旋转精灵
- 如何缩放精灵
- 如何平移精灵
- 如何对2D图形做矩阵变换
- 如何以动画的方式绘制精灵
需要的知识:
- 2D向量:由2个数组成的单位,指明了方向与大小 如D3DXVECTOR2 xl(2,3);
- 弧度:360度=6.28弧度,即2π,1度=(2π/360度),即1度=(π/180)弧度
使用方法:先使用精灵对象子函数D3DXMatrixTranstormation2D设置好矩阵,矩阵(参数1)应传递指针,其他参数是传达要怎么实现矩阵变换(如:大小变换,旋转,位移),第二步使用精灵对象子函数SetTransform(矩阵指针);最后就可以使用Draw函数渲染精灵对象了,使用Draw时不能指定渲染位置,应为第一步设置矩阵时,最后一个参数已经设置好了。
第一步:
D3DXMATRIX * D3DXMatrixTransformation2D(D3DXMATRIX * pOut, //通过引用传递的目标矩阵CONST D3DXVECTOR2 * pScalingCenter, //尺度向量FLOAT pScalingRotation, //缩放值CONST D3DXVECTOR2 * pScaling, //水平和垂直缩放的向量CONST D3DXVECTOR2 * pRotationCenter, //旋转中心/轴矢量FLOAT Rotation, //旋转角,需要弧度CONST D3DXVECTOR2 * pTranslation //平移向量,绘制精灵的位置
);
D3DXMATRIX POUT; //4*4矩阵FLOAT suofang = 1; //缩放因子,1为正常图片大小D3DXVECTOR2 SUOFANG(suofang, suofang); //缩放向量D3DXIMAGE_INFO info1;D3DXGetImageInfoFromFile("liu.png", &info1);//获得文件尺寸D3DXVECTOR2 ZHONGXING((info1.Width * suofang) / 2,(info1.Height * suofang) / 2);//缩放因子FLOAT du = 0; //角度值FLOAT rotation = (3.14 / 180) * du; //将角度值转换成弧度D3DXVECTOR2 trans(inta, intb);D3DXMatrixTransformation2D(&POUT,NULL,0,&SUOFANG,&ZHONGXING,rotation,&trans);
第二步:
有了第一步之后,就可以使用下面这个函数告诉精灵对象,使用这个矩阵作为当前的变换
spriteobj->SetTransform(&POUT);
第三步:
可以使用Draw函数渲染啦,但是Draw函数渲染位置参数要为NULL,应为矩阵的位移向量已经指明了,要是填的话会怎样我也没试过,懒
我使用Draw渲染矩阵对象只要2个参数就可以了,第一个参数是纹理对象,最后一个参数是屏蔽色
spriteobj->Begin(D3DXSPRITE_ALPHABLEND); //锁住spriteobj->Draw(texture, NULL, NULL, NULL,D3DCOLOR_XRGB(255,255,255)); //渲染spriteobj->End(); //释放
完
D3D9学习笔记之精灵变换篇相关推荐
- 【OpenGL学习笔记⑥】——3D变换【旋转的正方体 实现地月系统 旋转+平移+缩放】
✈️ 文章目录 零. 成果预览图 一.3D立方体的顶点数组 二.纹理旋转 三.纹理缩放 四.画n个3D图形 五.轨道的数学公式 六.深度缓冲(Z 缓冲) 七.完整代码 八.参考附录: 神器的正方体 ☁ ...
- VULKAN学习笔记-inter教学四篇
VULKAN学习笔记-inter教学四篇 --交换链相关函数:实例层 vkCreateWin32SurfaceKHR vkDestroySurfaceKHR vkGetPhysicalDeviceSu ...
- COBOL 学习笔记 之 入門篇(续集)
书接上一回(COBOL 学习笔记 之 入門篇 ) 从程序可以看到,COBOL程序分为四部分: IDENTIFICATION DIVISION. ENVIRONMENT DIVISION. D ...
- 菜鸟学习笔记:Java提升篇12(Java动态性2——动态编译、javassist字节码操作)
菜鸟学习笔记:Java提升篇12(Java动态性2--动态编译.javassist字节码操作) Java的动态编译 通过脚本引擎执行代码 Java字节码操作 JAVAssist的简单使用 常用API ...
- 菜鸟学习笔记:Java提升篇11(Java动态性1——注解与反射)
Java提升篇11(Java其它高级特性--注解与反射) 注解(Annotation) JDK内置注解 自定义注解 元注解(meta-annotation) 反射(reflection) 动态语言 反 ...
- 菜鸟学习笔记:Java提升篇10(网络2——UDP编程、TCPSocket通信、聊天室案例)
菜鸟学习笔记:Java提升篇10(网络2--UDP编程.TCPSocket通信) UDP编程 TCP编程(Socket通信) 单个客户端的连接 多个客户端的连接(聊天室案例) UDP编程 在上一篇中讲 ...
- 菜鸟学习笔记:Java提升篇9(网络1——网络基础、Java网络编程)
菜鸟学习笔记:Java提升篇9(网络1--网络基础.Java网络编程) 网络基础 什么是计算机网络 OS七层模型 Java网络编程 InetAddress InetSocketAddress URL类 ...
- 菜鸟学习笔记:Java提升篇8(线程2——线程的基本信息、线程安全、死锁、生产者消费者模式、任务调度)
菜鸟学习笔记:Java提升篇8(线程2--线程的基本信息.线程安全.死锁.生产者消费者模式.任务调度) 线程的基本信息 线程同步 线程安全 死锁 生产者消费者模式 任务调度(了解) 线程的基本信息 J ...
- 菜鸟学习笔记:Java提升篇6(IO流2——数据类型处理流、打印流、随机流)
菜鸟学习笔记:Java IO流2--其他流 字节数组输入输出流 数据类型处理流 基本数据类型 引用类型 打印流 System.in.System.out.System.err 随机流RandomAcc ...
- 菜鸟学习笔记:Java提升篇5(IO流1——IO流的概念、字节流、字符流、缓冲流、转换流)
菜鸟学习笔记:Java IO流1--IO流的概念.字节流.字符流.缓冲流.转换流 IO流的原理及概念 节点流 字节流 文件读取 文件写出 文件拷贝 文件夹拷贝 字符流 文件读取 文件写出 处理流 缓冲 ...
最新文章
- SpringBoot之前端文件管理
- Hadoop中RPC协议小例子报错java.lang.reflect.UndeclaredThrowableException解决方法
- Unicode/not set/multi-byte/部分常用函数
- P1720 月落乌啼算钱(斐波那契数列)--python3实现
- 终于把公司的底裤扒了!
- c语言中的数据变量类型,大小
- nsautoreleasepool研究
- 吉日嘎拉DotNet.BusinessV4.2中的一处bug,及我的修复和扩展
- 在软件测试中UT,IT,ST,UAT分别是什么意思
- 微信语音怎么转发?微信转发语音居然是这样做的…
- html气泡写法,制作CSS气泡框
- VPC Peering 具有特定路由的配置
- uniapp 总结篇 (小程序)
- 【刘文彬】 Debug EOS:nodeos + mongo_db_plugin
- Redis中的Lua脚本怎么玩
- socket中pack 和 unpack 的使用
- 360浏览器代码修改浏览模式
- drive登录不上 华为电脑one_Win10电脑中OneDrive无法登录如何解决
- 绿联硬盘盒挂载linux,绿联sata硬盘盒,2.5/3.5寸外置usb3.0移动硬盘盒
- i.i.d 独立同分布
热门文章
- 群晖 Docker Gitlab 安装 及 https配置
- 使用AutoHotKey将多行内容转成单行并翻译或获取中文拼音
- vba自定义函数,设置加载宏,建立自己的excel函数库,代码库
- 可以用云服务器挂机传奇吗,蜂窝云挂机划算吗 游戏蜂窝云挂机怎么用
- 推送V3 - Vue + Layim + Websocket 实践笔记
- Revit二次开发_类别对应的BuiltInCategory枚举
- 【深度学习之美】全面连接困何处,卷积网络见解深(入门系列之九)
- 大学生体育课期末大作业
- Kubernetes Ingress
- 浅记一下伽卡他卡被全屏控制时脱离控制