(原文地址:http://alvincc-tech.blogspot.com/2010/10/opengl-glsl-directx-hlsl.html)

OpenGL, GLSL, DirectX, HLSL中的矩阵存储形式

OpenGL:  按列存储矩阵(column-major)。调用API形成的矩阵用来和一个列向量相乘,矩阵在左,列向量在右
GLSL:   存储方式和OpenGL相同(column-major)
DirectX:    按行存储矩阵(row-major)。调用API形成的矩阵用来和一个行向量相乘,矩阵在右,行向量在左
HLSL: 存储方式和DirectX相反(column-major)

因此,若HLSL的矩阵也是用来右乘行向量,则应将DX API构造的矩阵做Transpose,这样数学上HLSL会将Transpose后的矩阵视为 和DX API构造的矩阵是同一个矩阵,但是实际数值的存储顺序不同。若用来将矩阵左乘列向量,则可以不必做Transpose。

因此,一般的传入shader的操作是原封不动的将用来存储矩阵的array导入shader。但是如果是用的effect system里的setMatrix(), 则会先自动将矩阵由row-major改为colunn-major存储,再将其导入shader。这种情况下则无需在导入前手动Transpose 矩阵。

转载于:https://www.cnblogs.com/ygxsk/p/7693980.html

OpenGL, GLSL, DirectX, HLSL中的矩阵存储形式相关推荐

  1. HLSL中的MUL指令深层剖析

    HLSL中的MUL指令深层剖析 原作者邮箱 BoYueGame#Gmail#com 欢迎交流. 此贴可以随意转载而不用注名出处.但也别说是你写的就行. 在读此文之前,读者应该知道什么是行主,列主矩阵, ...

  2. 16 bit float 存储_小数在内存中是如何存储的,揭秘诺贝尔奖级别的设计(长篇神文)...

    小数在内存中是以浮点数的形式存储的.浮点数并不是一种数值分类,它和整数.小数.实数等不是一个层面的概念.浮点数是数字(或者说数值)在内存中的一种存储格式,它和定点数是相对的.C语言使用定点数格式来存储 ...

  3. C语言学习(十一)小数在内存中是如何存储的?定点数与浮点数各自的优势在哪?规格化浮点数与非规格化浮点数又表示什么?

    C语言学习(十一)小数在内存中是如何存储的?定点数与浮点数各自的优势在哪?规格化浮点数与非规格化浮点数又表示什么? 浮点数与定点数 小数在内存中以浮点数形式存储.浮点数并不是一种数值分类,他和整数.小 ...

  4. opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类

    opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类 参考文章: (1)opengl中的Floatbuffer和 ...

  5. OpenGL中摄像机矩阵的计算原理

    OpenGL中摄像机矩阵的计算原理 熟悉OpenGL|ES的朋友,可能会经常设置摄像机的view矩阵,iOS中相对较好,已经封装了方向,只需要设置摄像机位置,目标点位置以及UP向量即可.下面先介绍下摄 ...

  6. 计算机图形学中OpenGL和DirectX

    引言 接触计算机图形学,一定听说过两大编程接口:OpenGL和DirectX,两者之间不断竞争,也不断促进着各自的发展.API大战真的很有意思,一起来看看这两大BOSS究竟是什么,实力如何? Open ...

  7. GLSL到HLSL参考

    GLSL到HLSL参考 2017年2月8日 11分钟阅读 贡献者 当您将图形架构从OpenGL ES 2.0移植到Direct3D 11以创建通用Windows平台(UWP)游戏时,可以将OpenGL ...

  8. GLSL vs HLSL vs Cg

    摘抄自<GPU Programming And Cg Language Primer 1rd Edition> 中文名<GPU编程与CG语言之阳春白雪下里巴人> Shader ...

  9. [转] Carmack 谈 d3d 与 ogl,定位专业应用的OpenGL,专注娱乐应用的DirectX,未来:OpenGL、DirectX并行发展

    http://blog.csdn.net/xieyuquan/archive/2006/10/05/1321801.aspx 我找不到一个理由不让这篇文章多一份Copy 原地址:http://bbs. ...

最新文章

  1. dsp和通用计算机的区别,dsp芯片是什么_dsp芯片和通用微处理器有什么区别
  2. 手动创建一棵二叉树,然后利用前序、中序、后序、层序进行遍历(从创建二叉树到各种方式遍历)(含运行结果)
  3. python入门视频教程推荐-python入门学习哪个书比较好(python视频教程知乎)
  4. ccflow表结构与运行机制(二次开发必读)
  5. 超级组合:用户中心+云平台
  6. 计算机二级土楼ppt是第几套,2019年3月全国计算机二级考试PPT部分操作题真题-无忧ppt...
  7. 前端学习(1895)vue之电商管理系统电商系统之组件的分页显示
  8. python go rpc_Go实现简易RPC框架的方法步骤
  9. php面试编程题_一位资深php程序员在北京的面试30个题目
  10. Vuex中的核心方法
  11. linux 安装mysql(rpm文件安装)
  12. 织梦dede源码列表页调用tags标签并带链接的实现方法
  13. 帝国 loginjs.php,帝国CMS页面JS调用登录状态loginjs.php中获取会员头像的方法
  14. project weibo
  15. 查看服务器数据库信息,怎么查看数据库服务器信息
  16. 【小程序】微信小程序自定义导航栏及其封装
  17. 9位院士!10所一流大学,迎“新帅”
  18. [租房]刚步入社会的小萌新,休想坑小妹妹,安排!
  19. javaScript:结合mousedown、mousemove、mouseup事件,实现拖动方块在页面内移动(代码)
  20. [Unity][blender]在blender中新建标准两足人形骨骼模型动作导入到Unity中

热门文章

  1. git 命令详解和Android Studio代码管理工具
  2. Java并发编程实战————并发技巧小结
  3. Java核心篇之Redis--day4
  4. Exception和Error深入分析~~~
  5. e2140服务器性能,4000 还是E2140?两大人气CPU对决
  6. (set)计算集合的并
  7. c# url传参不能包含html标签,c#解析包含HTML特殊字符的字符串XElement
  8. 小程序 wxml selectable_微信小程序 抽象节点
  9. java8安装_科学网—Java JDK 8 的安装以及环境变量的配置(Linux and Windows) - 彭勇的博文...
  10. mysql timestamp排序_对多个表进行排序MYSQL TimeStamp