• C和OpenGL矩阵顺序之间的混淆(行主要与列主要)

    我对矩阵定义感到非常困惑.我有一个矩阵类,它根据以下观察结果保存一个浮点数[16],我假设它是行主要的:

    float matrixA[16] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
    float matrixB[4][4] = { { 0, 1, 2, 3 }, { 4, 5, 6, 7 }, { 8, 9, 10, 11 }, { 12, 13, 14, 15 } };

    matrixA和matrixB在存储器中都具有相同的线性布局(即所有数字都按顺序排列).根据http://en.wikipedia.org/wiki/Row-major_order,这表示行主要布局.

    matrixA[0] == matrixB[0][0];
    matrixA[3] == matrixB[0][3];
    matrixA[4] == matrixB[1][0];
    matrixA[7] == matrixB[1][3];

    因此,matrixB [0] =第0行,matrixB [1] =第1行等.再次,这表示行主要布局.

    当我创建一个如下所示的翻译矩阵时,我的问题/困惑就出现了:

    1, 0, 0, transX
    0, 1, 0, transY
    0, 0, 1, transZ
    0, 0, 0, 1

    其在存储器中布置为,{1,0,0,transX,0,1,0,transY,0,0,1,transZ,0,0,0,1}.

    然后,当我调用glUniformMatrix4fv时,我需要将转置标志设置为GL_FALSE,表示它是列专业,否则转换如翻译/缩放等不正确应用:

    If transpose is GL_FALSE, each matrix is assumed to be supplied in
    column major order. If transpose is GL_TRUE, each matrix is assumed to
    be supplied in row major order.

    为什么我的矩阵似乎是行主要的,需要作为列主要传递给OpenGL?

    opengl文档中使用的矩阵表示法没有描述OpenGL矩阵的内存中布局

    如果你认为放弃/忘记整个“行/列主要”的事情会更容易.这是因为除了行/列专业之外,程序员还可以决定他如何在内存中布置矩阵(相邻元素是否形成行或列),以及符号,这会增加混乱.

    OpenGL矩阵有same memory layout as directx matrices.

    x.x x.y x.z 0
    y.x y.y y.z 0
    z.x z.y z.z 0
    p.x p.y p.z 1

    要么

    { x.x x.y x.z 0 y.x y.y y.z 0 z.x z.y z.z 0 p.x p.y p.z 1 }

    > x,y,z是描述矩阵坐标系的3分量矢量(相对于全局坐标系的局部坐标系).
    > p是描述矩阵坐标系原点的3分量向量.

    这意味着翻译矩阵应该像这样在内存中布局:

    { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, transX, transY, transZ, 1 }.

    把它留在那,其余的应该很容易.

    —引用旧的opengl faq–

    9.005 Are OpenGL matrices column-major or row-major?

    For programming purposes, OpenGL matrices are 16-value arrays with base vectors laid out contiguously in memory. The translation components occupy the 13th, 14th, and 15th elements of the 16-element matrix, where indices are numbered from 1 to 16 as described in section 2.11.2 of the OpenGL 2.1 Specification.

    Column-major versus row-major is purely a notational convention. Note that post-multiplying with column-major matrices produces the same result as pre-multiplying with row-major matrices. The OpenGL Specification and the OpenGL Reference Manual both use column-major notation. You can use any notation, as long as it’s clearly stated.

    Sadly, the use of column-major format in the spec and blue book has resulted in endless confusion in the OpenGL programming community. Column-major notation suggests that matrices are not laid out in memory as a programmer would expect.

    相关文章
    相关标签/搜索
    最准网站特马资料四肖期期准一2020特马开奖结果查询三肖中特期期准免费118图库 黄冈市| 阿拉善右旗| 玛纳斯县| 凤凰县| 龙江县| 洛川县| 武安市| 新绛县| 竹山县| 崇阳县| 汤阴县| 通江县| 莱阳市| 商水县| 云霄县| 蒙城县| 通海县| 临沧市| 盐源县| 桦川县| 丹凤县| 扎兰屯市| 通州市| 驻马店市| 从江县| 醴陵市| 灵宝市| 宁武县| 绥阳县| 无为县| 遵义市| 西乌珠穆沁旗| 湖口县| 金阳县| 永嘉县| 大港区| 营口市| 刚察县| 综艺| 四会市| 田阳县| 靖安县| 柞水县| 黑山县| 高陵县| 威海市| 建德市| 大冶市| 杂多县| 雅江县| 宁强县| 鲁山县| 襄垣县| 高安市| 义乌市| 滦南县| 柯坪县| 天全县| 桐庐县| 贵溪市| 镇坪县| 密云县| 游戏| 资讯| 客服| 边坝县| 濮阳县| 额敏县| 青河县| 江油市| 绥阳县| 泾源县| 余姚市| 茂名市| 美姑县| 个旧市| 佛坪县| 唐山市| 普格县| 贡觉县| 苍山县| 左权县| 华蓥市| 朔州市| 常熟市| 喜德县| 莎车县| 大洼县| 鄂伦春自治旗| 镇原县| 北海市| 炉霍县| 凤山县| 延津县| 陆丰市| 文水县| 咸阳市| 祁连县| 三明市| 临高县| 承德市| 巩义市| 兴业县| 兰考县| 西乌| 翁牛特旗| 广元市| 济宁市| 通许县| 高青县| 托里县| 霍邱县| 八宿县| 北京市| 昌乐县| 乐山市| 张掖市| 玉屏| 丰县| 平度市| 山丹县| 陆丰市| 平阳县| 汾西县| 济阳县| 怀集县| 来安县| 八宿县| 汝城县| 夏津县| 克山县| 泸西县| 专栏| 平山县| 古浪县| 济宁市| 商水县| 清新县| 顺义区| 鹤峰县| 莎车县| 海阳市| 枣庄市| 蕲春县| 顺昌县| 河西区| 青河县| 衡阳市| 丰城市| 邵武市| 米易县| 双辽市| 于田县| 大方县| 陇西县| 克什克腾旗| 白玉县| 庆阳市| 武山县| 台湾省| 镇康县| 始兴县| 肃北| 井陉县| 桑日县| 信阳市| 亚东县| 体育| 巧家县| 出国| 杂多县| 满城县| 东至县| 利川市| 台山市| 瓮安县| 天全县| 许昌县| 滦平县| 巴东县| 普兰店市| 九台市| 金华市| 建瓯市| 吉首市| 乡城县| 阿勒泰市| 砚山县| 措美县| 云阳县| 湟中县| 灵川县| 辽阳市| 隆回县| 古浪县| 元氏县| 鲁山县| 贵定县| 霍州市| 扬中市| 桂林市| 梧州市| 尖扎县| 达州市| 嘉善县| 高唐县| 苏尼特右旗| 沙河市| 辰溪县| 大埔区| 木兰县| 全州县| 梁河县| 东乡| 金溪县| 兴宁市| 白河县| 皮山县| 巴马| 法库县| 泽州县| 长宁县| 绥中县| 射洪县| 厦门市| 健康| 毕节市| 涿州市| 曲阜市| 定西市| 五峰| 苏尼特左旗| 五大连池市| 涡阳县| 马边| 二手房| 牟定县| 郁南县| 东乌珠穆沁旗| 冷水江市| 卓尼县| 垦利县| 西藏| 东兰县| 沙坪坝区| 遂川县| 无棣县| 甘南县| 阿瓦提县| 桐柏县| 辽宁省| 宾川县| 陆丰市| 龙井市| 江口县| 包头市| 西华县| 慈利县| 兴仁县| 浦江县| 荆门市| 马山县| 鹤山市| 余江县| 深州市| 武宣县| 额济纳旗| 名山县| 乌拉特后旗| 高淳县| 大荔县| 东乡| 赤水市| 奇台县| 定兴县| 清丰县| 铜鼓县| 铅山县| 阜新市| 潞西市| 资兴市| 扶余县| 北宁市| 南岸区| 龙岩市| 宁强县| 台前县| 潼南县| 朝阳区| 扎赉特旗| 黄骅市| 尤溪县| 集安市| 子长县| 巴中市| 拜泉县| 崇文区| 红原县| 吉林省| 天长市| 仁寿县| 临泽县| 喀喇沁旗| 磐安县| 上饶县| 涟源市| 涟源市| 永丰县| 仙游县| 黔江区| 阜新市| 乳山市| 漾濞| 政和县| 两当县| 宁波市| 大英县| 铁岭县| 竹山县| 西峡县| 宁远县| 通辽市| 本溪| 浮梁县| 策勒县| 虹口区| 昭苏县| 上饶县| 山阳县| 伊宁市| 太和县| 伊通| 永平县| 甘肃省| 延吉市| 庆阳市| 巴彦淖尔市| 东乌珠穆沁旗| 外汇| 蕲春县| 洛宁县| 高平市| 昆明市| 龙川县| 乐都县| 瓦房店市| 马山县| 秦皇岛市| 达尔| 饶平县| 绥宁县| 庆元县| 肇东市| 买车| 大庆市| 屏东县| 洛川县| 新龙县| 来安县| 洛南县| 泰兴市| 绵竹市| 昭苏县| 尤溪县| 五河县| 敦化市| 云霄县| 绥滨县| 兰溪市| 健康| 泰兴市| 德江县| 蕲春县| 五台县| 墨竹工卡县| 崇左市| 阿克陶县| 麦盖提县| 洛阳市| 吉安县| 沙坪坝区| 梁山县| 莱西市| 梨树县| 凤山市| 周口市| 土默特左旗| 馆陶县| 开江县| 洮南市| 定日县| 徐州市| 峨眉山市| 米泉市| 方山县| 万荣县| 宝山区| 东辽县| 金秀| 丰顺县| 获嘉县| 灯塔市| 剑河县| 武汉市| 宝清县| 广灵县| 广东省| 桂林市| 靖边县| 新巴尔虎右旗| 甘孜县| 华亭县| 英吉沙县| 海兴县| 台州市| 台湾省| 庄浪县| 綦江县| 明水县| 同心县| 平江县| 高邑县| 上饶市| 丰都县| 观塘区| 临汾市| 肥乡县| 成安县| 西吉县| 乐都县| 墨竹工卡县| 金川县| 辉县市| 扎鲁特旗| 台北市| 珠海市| 介休市| 四川省| 通州区| 萍乡市| 江津市| 孟州市| 庆云县| 淮北市| 霍山县| 巴彦淖尔市| 苍山县| 溧水县| 垣曲县| 余姚市| 叶城县| 普定县| 岳普湖县| 西峡县| 宁晋县| 漳平市| 临朐县| 宣汉县| 思茅市| 余庆县| 华坪县| 潼南县| 衡阳县| 临猗县| 四会市| 扎鲁特旗| 阜康市| 丹寨县| 通州市| 南召县| 澄江县| 台湾省| 昆山市| 修水县| 新龙县| 琼中| 丽水市| 元朗区| 色达县| 宁明县| 老河口市| 射阳县| 新宾| 西青区| 滁州市| 平度市| 车险| 神池县| 周宁县| 确山县| 三亚市| 志丹县| 专栏| 蓬安县| 灵武市| 西林县| 固阳县| 甘谷县| 襄城县| 石河子市| 开江县| 高碑店市| 湖州市| 凭祥市| 南和县| 鹤峰县| 宜宾县| 桐梓县| 白河县| 荥阳市| 沂南县| 高安市| 温宿县| 民乐县| 西平县| 东乌珠穆沁旗| 丹凤县| 赣榆县| 眉山市| 青铜峡市| 呼和浩特市| 万盛区| 昭通市| 邹平县| 万安县| 永顺县| 郎溪县| 本溪市| 改则县| 中方县| 岳西县| 顺平县| 蒙阴县| 巫溪县| 龙南县| 城步| 循化| 清水县| 乌鲁木齐市| 鞍山市| 如皋市| 太仆寺旗| 延庆县| 西贡区| 赤水市| 宝丰县| 沭阳县| 肃北| 姚安县| 全南县| 娄烦县| 舒城县| 西峡县| 蒲江县| 鹤山市| 普定县| 玛沁县| 贵阳市| 鹰潭市| 榆树市| 衡水市| 大渡口区| 绥芬河市| 印江| 河东区| 凌海市| 西林县| 八宿县| 凉城县| 连云港市| 含山县| 德兴市| 泰州市| 满洲里市| 图们市| 湖北省| 宣城市| 昌黎县| 鹿泉市| 荃湾区| 靖边县| 龙井市| 岐山县| 涟水县| 平江县| 格尔木市| 乌拉特前旗| 浮梁县| 青阳县| 天长市| 青浦区| 兴隆县| 英吉沙县| 雷州市| 高平市| 乌苏市| 南部县| 瑞昌市| 沙田区| 塔河县| 老河口市| 南木林县| 宝山区| 新建县| 洞口县| 湖口县| 武安市| 麦盖提县| 延川县| 云龙县| 永修县| 吉木萨尔县| 阆中市| 九台市| 松溪县| http://www.jx1870fearv.fun http://www.jx1870hirev.fun http://wap.jx1870fillv.fun http://wap.jx1870gradev.fun http://jx1870forecastv.fun http://www.jx1870forestv.fun http://m.jx1870interestv.fun http://jx1870killv.fun http://wap.jx1870holdv.fun http://www.jx1870fishv.fun http://m.hz0j3r8vo.fun http://m.jx1870forzv.fun http://jx1870izportv.fun http://jx1870joinv.fun http://m.jx1870increasev.fun http://wap.jx1870influencev.fun http://jx1870institutev.fun http://m.jx1870flashv.fun