内容:

  1. 如何旋转精灵
  2. 如何缩放精灵
  3. 如何平移精灵
  4. 如何对2D图形做矩阵变换
  5. 如何以动画的方式绘制精灵

需要的知识:

  1. 2D向量:由2个数组成的单位,指明了方向与大小 如D3DXVECTOR2 xl(2,3);
  2. 弧度: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学习笔记之精灵变换篇相关推荐

  1. 【OpenGL学习笔记⑥】——3D变换【旋转的正方体 实现地月系统 旋转+平移+缩放】

    ✈️ 文章目录 零. 成果预览图 一.3D立方体的顶点数组 二.纹理旋转 三.纹理缩放 四.画n个3D图形 五.轨道的数学公式 六.深度缓冲(Z 缓冲) 七.完整代码 八.参考附录: 神器的正方体 ☁ ...

  2. VULKAN学习笔记-inter教学四篇

    VULKAN学习笔记-inter教学四篇 --交换链相关函数:实例层 vkCreateWin32SurfaceKHR vkDestroySurfaceKHR vkGetPhysicalDeviceSu ...

  3. COBOL 学习笔记 之 入門篇(续集)

    书接上一回(COBOL 学习笔记 之 入門篇 ) 从程序可以看到,COBOL程序分为四部分: IDENTIFICATION DIVISION.  ENVIRONMENT    DIVISION.  D ...

  4. 菜鸟学习笔记:Java提升篇12(Java动态性2——动态编译、javassist字节码操作)

    菜鸟学习笔记:Java提升篇12(Java动态性2--动态编译.javassist字节码操作) Java的动态编译 通过脚本引擎执行代码 Java字节码操作 JAVAssist的简单使用 常用API ...

  5. 菜鸟学习笔记:Java提升篇11(Java动态性1——注解与反射)

    Java提升篇11(Java其它高级特性--注解与反射) 注解(Annotation) JDK内置注解 自定义注解 元注解(meta-annotation) 反射(reflection) 动态语言 反 ...

  6. 菜鸟学习笔记:Java提升篇10(网络2——UDP编程、TCPSocket通信、聊天室案例)

    菜鸟学习笔记:Java提升篇10(网络2--UDP编程.TCPSocket通信) UDP编程 TCP编程(Socket通信) 单个客户端的连接 多个客户端的连接(聊天室案例) UDP编程 在上一篇中讲 ...

  7. 菜鸟学习笔记:Java提升篇9(网络1——网络基础、Java网络编程)

    菜鸟学习笔记:Java提升篇9(网络1--网络基础.Java网络编程) 网络基础 什么是计算机网络 OS七层模型 Java网络编程 InetAddress InetSocketAddress URL类 ...

  8. 菜鸟学习笔记:Java提升篇8(线程2——线程的基本信息、线程安全、死锁、生产者消费者模式、任务调度)

    菜鸟学习笔记:Java提升篇8(线程2--线程的基本信息.线程安全.死锁.生产者消费者模式.任务调度) 线程的基本信息 线程同步 线程安全 死锁 生产者消费者模式 任务调度(了解) 线程的基本信息 J ...

  9. 菜鸟学习笔记:Java提升篇6(IO流2——数据类型处理流、打印流、随机流)

    菜鸟学习笔记:Java IO流2--其他流 字节数组输入输出流 数据类型处理流 基本数据类型 引用类型 打印流 System.in.System.out.System.err 随机流RandomAcc ...

  10. 菜鸟学习笔记:Java提升篇5(IO流1——IO流的概念、字节流、字符流、缓冲流、转换流)

    菜鸟学习笔记:Java IO流1--IO流的概念.字节流.字符流.缓冲流.转换流 IO流的原理及概念 节点流 字节流 文件读取 文件写出 文件拷贝 文件夹拷贝 字符流 文件读取 文件写出 处理流 缓冲 ...

最新文章

  1. SpringBoot之前端文件管理
  2. Hadoop中RPC协议小例子报错java.lang.reflect.UndeclaredThrowableException解决方法
  3. Unicode/not set/multi-byte/部分常用函数
  4. P1720 月落乌啼算钱(斐波那契数列)--python3实现
  5. 终于把公司的底裤扒了!
  6. c语言中的数据变量类型,大小
  7. nsautoreleasepool研究
  8. 吉日嘎拉DotNet.BusinessV4.2中的一处bug,及我的修复和扩展
  9. 在软件测试中UT,IT,ST,UAT分别是什么意思
  10. 微信语音怎么转发?微信转发语音居然是这样做的…
  11. html气泡写法,制作CSS气泡框
  12. VPC Peering 具有特定路由的配置
  13. uniapp 总结篇 (小程序)
  14. 【刘文彬】 Debug EOS:nodeos + mongo_db_plugin
  15. Redis中的Lua脚本怎么玩
  16. socket中pack 和 unpack 的使用
  17. 360浏览器代码修改浏览模式
  18. drive登录不上 华为电脑one_Win10电脑中OneDrive无法登录如何解决
  19. 绿联硬盘盒挂载linux,绿联sata硬盘盒,2.5/3.5寸外置usb3.0移动硬盘盒
  20. i.i.d 独立同分布

热门文章

  1. 群晖 Docker Gitlab 安装 及 https配置
  2. 使用AutoHotKey将多行内容转成单行并翻译或获取中文拼音
  3. vba自定义函数,设置加载宏,建立自己的excel函数库,代码库
  4. 可以用云服务器挂机传奇吗,蜂窝云挂机划算吗 游戏蜂窝云挂机怎么用
  5. 推送V3 - Vue + Layim + Websocket 实践笔记
  6. Revit二次开发_类别对应的BuiltInCategory枚举
  7. 【深度学习之美】全面连接困何处,卷积网络见解深(入门系列之九)
  8. 大学生体育课期末大作业
  9. Kubernetes Ingress
  10. 浅记一下伽卡他卡被全屏控制时脱离控制