首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 游戏天堂 > 游戏开发 > OpenGL中的矩阵存储方式
【标  题】:OpenGL中的矩阵存储方式
【关键字】:OpenGL
【来  源】:http://blog.csdn.net/skyman_2001/archive/2005/10/26/517034.aspx

OpenGL中的矩阵存储方式

在OpenGL中,矩阵是以列优先的方式(column-major order)存储的,而一般的数学书上是以行优先的方式(row-major order)存储的。

列优先:

m0     m4     m8     m12

m1     m5     m9     m13

m2     m6     m10   m14

m3     m7     m11   m15

行优先:

 m0     m1     m2     m3

 m4     m5     m6     m7

 m8     m9     m10    m11

 m12   m13   m14   m15

  在OpenGL中,矩阵是用一维数组来保存的:m[16]。

可以用ARB_transpose_matrix来实现2者的转换:

    New functions and tokens are added allowing application matrices
    stored in row major order rather than column major order to be
    transferred to the OpenGL implementation.  This allows an application
    to use standard C-language 2-dimensional arrays (m[row][col]) and
    have the array indices match the expected matrix row and column indexes.
    These arrays are referred to as transpose matrices since they are
    the transpose of the standard matrices passed to OpenGL.

    This extension adds an interface for transfering data to and from the
    OpenGL pipeline, it does not change any OpenGL processing or imply any
    changes in state representation.
提供的函数:

    void LoadTransposeMatrix{fd}ARB(T m[16]);
    void MultTransposeMatrix{fd}ARB(T m[16]);

提供的标记(对GetBooleanv, GetIntegerv, GetFloatv, GetDoublev函数):

 TRANSPOSE_MODELVIEW_MATRIX_ARB   
TRANSPOSE_PROJECTION_MATRIX_ARB   
TRANSPOSE_TEXTURE_MATRIX_ARB   
TRANSPOSE_COLOR_MATRIX_ARB  

LoadTransposeMatrixARB(m)相当于:

 float n[16];
transpose(m,n)
LoadMatrix(n);

MultTransposeMatrixARB(m)相当于:

 float n[16];
transpose(m,n);
MultMatrix(n);

GetFloatv(TRANSPOSE_MODELVIEW_MATRIX_ARB,m)相当于:

 float n[16];
GetFloatv(MODELVIEW_MATRIX_ARB,n);
transpose(n,m);

TRANSPOSE_PROJECTION_MATRIX_ARB,TRANSPOSE_TEXTURE_MATRIX_ARB和 TRANSPOSE_COLOR_MATRIX_ARB类似。

Tcxxs'J BlackJack AlphaTest发布:【上一篇】
[计算机模拟]元胞自动机[CA]初探---“生命游戏”的实现:【下一篇】
【相关文章】
  • 《30年代互动电影——格斗天王》(OpenGL+Cg)
  • 动作RPG演示源代码(VC+OpenGL)
  • Shadow Mapping Using OpenGL
  • Linux下的OpenGL编程
  • 全屏幕OpenGL程序
  • 用BCB编制OpenGL应用程序
  • Win 95/NT下OpenGL编程原理
  • GLScene 200403 For D5-7 (OpenGL组件包)
  • 一个OpenGL例子
  • Visual C++中OpenGL编程入门
  • 【随机文章】
  • OCSS7 3.3 installation @HPUX 11.11
  • adsl-setup
  • router rip
  • Linux下常见文件格式的压缩、解压小结
  • 几个简单的mysql命令就可以解决的问题非要用什么phpmyadmin么?
  • 让我们一起来对VSTS扩展开发吧------制作自己的VSTS模版----第三节 VSTS模版的体系概述
  • 第22回 测试用例的复审
  • 几种MAIL SERVER的功能应用比较
  • Helix Server的设置(一)
  • 我的web开发感言
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.