opengl-GLSL语言编写着色器时数组下标的问题

问题描述

GLSL语言编写着色器时数组下标的问题

在GLSL中,opengl红宝书第八版写的数组是列主序的,也就是第一个下标是列,第二个下标是行,但看到后边就感觉有点晕了,列主序是说存储时按列主序还是声明变量和访问数组元素是按列主序,比如,int a[4][3]在GLSL中是3行4列的数组还是4行3列的数组,之所以会有这样的疑惑,是因为看书是遇到这么几句话
mat2 m,u,v
m=u*v //m={u00*v00+u01*v10 u00*v01+u01*v11
// u10*v00+u11*v10 u10*v01+u11*v11}
这样好像是行主序吧?但书上和网上都写的GLSL语言编写着色器时是列主序啊?

解决方案

列主序和行主序在算法上没有区别,区别的只是乘法的顺序,opengl是右乘,DX是左乘

时间: 2024-10-03 09:48:52

opengl-GLSL语言编写着色器时数组下标的问题的相关文章

OpenGL ES 片元着色器中 int 类型精度不匹配的问题分析

OpenGL ES 片元着色器中 int 类型精度不匹配的问题分析 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 最终解决方法补充: ------------------------ 经过反复

《Unity着色器和屏幕特效》——第2章 创建自定义着色器 2.1 打开程序项目

第2章 创建自定义着色器 这一章的内容将继续围绕飞船维修场景展开.通过添加自定义着色器,场景的真实感将获得进一步提升.我们将探索物体表面与场景光照之间的互动关系,展示Unity的基于物理的着色系统为游戏画面的质量带来的提升. 本章涉及的内容如下: 从无到有创建基本的自定义着色器. 为自定义着色器添加属性. 在场景中测试自定义着色器. 使用Cg语言编写着色器代码. 用多遍渲染实现更好的透明效果. 创建一个自定义的大气着色器. 2.1 打开程序项目 如果读者还没有打开过本书附带的示例程序项目,请从前

可编程渲染管线与着色器语言

Programming pipeline & shading language 大家好,今天想给大家介绍一下可编程渲染管线和着色器语言的相关基础知识,使想上手SHADER编程的童鞋们可以快速揭开SHADER语言的神秘面纱 由于时间有限,我决定只讲三个主要方面的内容,其过程中肯定会有不详细之处,还请见谅,就算是抛砖引玉,给大家一个简单的入门引路. 本章内容总共分为三个部分 一.3D渲染管线工作流程 二.可编程管线 三.着色器语言 3D渲染管线作为整个工作流程的基础,是不可或缺的基本知识.因此,作一

《OpenGL编程指南(原书第9版)》——2.1 着色器与OpenGL

2.1 着色器与OpenGL 现代OpenGL渲染管线严重依赖着色器来处理传入的数据.如果不使用着色器,那么用OpenGL可以做到的事情可能只有清除窗口内容了,可见着色器对于OpenGL的重要性.在OpenGL 3.0版本以前(含该版本),或者如果你用到了兼容模式(compatibility prof?ile)环境,OpenGL还包含一个固定功能管线(f?ixed-function pipeline),它可以在不使用着色器的情况下处理几何与像素数据.从3.1版本开始,固定功能管线从核心模式中去除

《OpenGL编程指南》一2.1 着色器与OpenGL

2.1 着色器与OpenGL 现代OpenGL渲染管线严重依赖着色器来处理传入的数据.如果不使用着色器,那么用OpenGL可以做到的事情可能只有清除窗口内容了,可见着色器对于OpenGL的重要性.在OpenGL 3.0版本以前(含该版本),或者如果你用到了兼容模式(compatibility profile)环境,OpenGL还包含一个固定功能管线(fixed-function pipeline),它可以在不使用着色器的情况下处理几何与像素数据.从3.1版本开始,固定功能管线从核心模式中去除,因

《OpenGL ES应用开发实践指南:Android卷》—— 3.2 编译着色器

3.2 编译着色器 现在我们已经把着色器源代码从文件中读出来了,下一步就是编译每个着色器了.我们要创建一个新的辅助类,它可以创建新的OpenGL着色器对象.编译着色器代码并且返回代表那段着色器代码的着色器对象.一旦写出样板代码,在未来的项目中就可以重用了. 作为开始,创建一个名为ShaderHelper的新类,并在类中添加如下代码: 这些代码会作为着色器辅助类的基础.与以前一样,不要忘了把导入加进代码中:如果你在使用静态导入时碰到什么问题,请参考1.5节:在本书的剩余部分,我们会一直遵循这个样式

OpenGL ES 着色器中问题解决技巧

OpenGL ES 着色器中问题解决技巧 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 灰暗的一天, 终于见到一丝曙光, 心情终于从沉重变得略有轻松, 虽然, 一早就明白, 曙光终究会闪现,

《OpenGL ES应用开发实践指南:Android卷》—— 3.3 把着色器一起链接进OpenGL的程序

3.3 把着色器一起链接进OpenGL的程序 既然我们已经加载并编译了一个顶点着色器和一个片段着色器,下一步就是把它们绑定在一起放入一个单个的程序(program)里. 3.3.1 理解OpenGL的程序 简单来说,一个OpenGL程序就是把一个顶点着色器和一个片段着色器链接在一起变成单个对象.顶点着色器和片段着色器总是一起工作的.没有片段着色器,OpenGL就不知道怎么绘制那些组成每个点.直线和三角形的片段:如果没有顶点着色器,OpenGL就不知道在哪里绘制这些片段.我们知道顶点着色器计算屏幕

《Unity着色器和屏幕特效开发秘笈》—— 1.2 创建基本的表面着色器

1.2 创建基本的表面着色器 随着我们进一步学习本书,你已经知道如何在Unity当中设置工作区,从而提高你的工作效率,而且这很容易实现.如果你已经熟悉了在Unity 4中创建着色器和设置材质,可以跳过这个教程.这里,我们只是为了确保新的Unity 4开发者能够顺利学习有关表面着色器的其他教程. 1.2.1 准备工作 开始学习本教程之前,你需要先打开Unity 4,并且创建新的项目.在本书中有一个Unity项目,所以当你学习到相应的教程时,你可以使用这个项目并添加自定义的着色器.当你完成了这些,现