glsl 中的 mat3(mat4 矩阵)语句有何作用?

2024-03-31

我正在做每个片段照明,并且在校正法线向量时,我得到了以下代码:vec3 f_normal = mat3(MVI) * normal;其中 MVI 是:mat4 MVI = transpose(inverse(ModelViewMatrix));。那么返回之后是什么mat3(MVI)陈述?


mat3(MVI) * normal

返回 4x4 矩阵中上方的 3x3 矩阵,并将法线乘以该矩阵。该矩阵称为“正规矩阵”。您可以使用它将法线从世界空间带到眼睛空间。矩阵的上部 3x3 部分对于缩放和旋转很重要,而其余部分仅用于平移(并且法线永远不会平移)

要将法线从世界空间转移到眼睛空间,您只需要 3x3逆转置模型视图矩阵。除非你的矩阵是正常的(没有非均匀尺度),否则原始矩阵与其逆转置相同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

glsl 中的 mat3(mat4 矩阵)语句有何作用? 的相关文章

  • 3D 图形矩阵 4x4 中最后一行的 magic 4 的用途是什么?

    当我阅读有关WebGL的书时 我看到了下一个矩阵描述 有关于书中最后一行的信息 WebGL 初学者指南 初学者指南 Diego Cantor Brandon Jones 神秘的第四排 第四排没有任何特殊之处 意义 元素 m4 m8 m12
  • VBO - 没有指数化的指数化

    我正在尝试将 VBO 与元素数组缓冲区一起用于我的三角形 如下所示 glBindBuffer GL ARRAY BUFFER g Buffer 0 glVertexPointer 3 GL FLOAT 0 BUFFER OFFSET 0 g
  • 将 CVPixelBuffer 渲染到 NSView (macOS)

    我有一个CVPixelBuffer我正在尝试在屏幕上有效地绘制 转变为低效率的方式NSImage可以工作 但速度非常慢 丢掉了大约 40 的帧数 因此 我尝试使用将其渲染在屏幕上CIContext s drawImage inRect fr
  • 将glm四元数转换为旋转矩阵并与opengl一起使用

    所以我将对象的方向存储在 glm fquat 中 我想用它来旋转我的模型 我怎么做 我试过这个 glPushMatrix glTranslatef position x position y position z glMultMatrixf
  • OpenGL Z 偏置(多边形偏移)限制

    我有两个共面的多边形 我尝试做 glEnable GL POLYGON OFFSET FILL glPolygonOffset 0 1 并期望其中一个明显 位于 另一个之上 这种情况直到大约 70 75 个单位之外 近剪裁平面为 1 远剪裁
  • 交错顶点提交如何提高性能?

    我已经阅读并看到了其他问题 这些问题通常都指向将顶点位置和颜色等交错到一个数组中的建议 因为这可以最大限度地减少从 cpu 发送到 gpu 的数据 我不清楚的是 即使使用交错数组 您仍然必须对位置和颜色指针进行单独的 GL 调用 OpenG
  • 使用 Opengl 绘制立方体 3D

    我想使用 OpenGL 绘制 3D 立方体这是我的代码如何纠正错误 float ver 8 3 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
  • (定义一个宏)方便OpenGL命令调试?

    有时插入条件打印和检查需要很长时间glGetError 使用二分搜索的形式来缩小范围 其中第一个函数调用是 OpenGL 首先报告错误 我认为如果有一种方法可以构建一个宏 我可以包装所有可能失败的 GL 调用 并有条件地调用 那就太酷了gl
  • OpenGL 和加载/读取 AoSoA(混合 SoA)格式的数据

    假设我有以下 AoSoA 格式的简化结构来表示顶点或点 struct VertexData float px 4 position x float py 4 position y 也就是说 每个实例VertexData存储4个顶点 我见过的
  • 即使在顶点着色器中使用,glGetUniformLocation()也会返回-1

    我正在尝试用法线渲染一个简单的立方体 我使用以下代码来初始化着色器 void initShader const char vertexShaderPath const char fragmentShaderPath cout lt lt I
  • 不理解 gluOrtho2D 函数

    我不能做什么gluOrtho2D 函数是做什么的 是否将原点固定在 OpenGL 窗口上的某个特定点或其他位置 这是因为gluOrtho2D 1 1 1 1 将原点固定在窗口的中间 如果它在某个时刻没有修复原点 那么有什么方法可以修复原点
  • 如何安装适用于 Windows C++ 的最新版本 OpenGL?

    我正在使用 Visual Studio 2010 运行 Windows 7 包含的 OpenGL 版本 include 是版本 1 1 我希望使用合理的当前版本 某种版本 3 或 4 我需要做什么才能达到该状态 OpenGL SDK 页面位
  • lnk1104:无法打开“LIBC.lib”链接

    使用 GLee 将着色器写入我的 OpenGL 项目并编译后 我收到了错误LNK1104 cannot open file LIBC lib 我尝试按照其他人的建议添加它并忽略它 但没有解决问题 有没有其他方法可以解决我错过的这个问题 以下
  • GLSL 棋盘图案

    我想用跳棋来遮蔽四边形 f P 下限 Px 下限 Py mod2 我的四边形是 glBegin GL QUADS glVertex3f 0 0 0 0 glVertex3f 4 0 0 0 glVertex3f 4 4 0 0 glVert
  • 对齐坐标系

    Let s say I have 2 coordinate systems as it is shown in image attached 如何对齐这个坐标系 我知道我需要将第二个坐标系围绕 X 平移 180 度 然后将其平移到第一个坐标
  • OpenGL 与 Eclipse CDT + MinGW + GLEW + GLFW:未定义的参考

    Edit 与此同时 我已经弄清楚了这一点 并在下面写了详细的答案 我刚刚尝试在 Win7 上从 Express 版本的 MSVC 10 切换到 Eclipse CDT 在配置时遇到了以下简单 OpenGL 代码的问题 在 Visual St
  • glut 库中缺少 glutInitContextVersion()

    我正在练习一些 opengl 代码 但是当我想通过以下方式强制 opengl 上下文使用特定版本的 opengl 时glutInitContextVersion 它编译过程失败并给出以下消息 使用未声明的标识符 glutInitContex
  • SDL 鼠标位置调整大小后裁剪

    我在 SDL 中的鼠标位置上遇到了一些奇怪的行为 如果我将窗口大小调整得更大 则任一鼠标事件的 x y 位置似乎都限制为原始窗口的宽度和高度 如果我缺少一些函数调用来告诉 SDL 鼠标区域的大小已增加 应用程序的相关部分 void Resi
  • 为什么OpenGL使用float而不是double? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • WebGL - 如何传递无符号字节顶点属性颜色值?

    我的顶点由具有以下结构的数组组成 Position colour float float float byte byte byte byte 传递顶点位置没有问题 gl bindBuffer gl ARRAY BUFFER this vbo

随机推荐

  • 如何使用动态规划确定最长递增子序列?

    我有一组整数 我想找到最长递增子序列 https en wikipedia org wiki Longest increasing subsequence该集合使用动态规划 好的 我将首先描述最简单的解决方案 即 O N 2 其中 N 是集
  • 条件 haml - if else 嵌套

    我想要的是 if 中的内容和 else 中的内容以包含 main block if transparency content inner style gt background url images illustrations transp
  • iOS 推送通知中的粗体(或其他格式)

    内置的消息应用程序会在推送通知中显示消息发送者的姓名bold 可以为我的应用程序执行此操作吗 这样的有效负载会是什么样子 如果相关的话 我正在使用 Mac 应用程序 APN Tester 进行测试 以使用此类有效负载向我的 iPhone 发
  • Fitnesse 与任何其他子系统测试工具[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们目前正在使用 Fitness 进行子系统测试 我们在使用该工具时遇到很多问题 很少提及 编写 Fi
  • 从 lambda (C++) 创建的 std::function 的奇怪返回行为

    如果函数返回引用但返回类型未显式调用为引用 则我在使用从 lambda 创建的 std functions 时遇到问题 看起来 std function 创建得很好 没有任何警告 但是在调用它时 当需要引用时会返回一个值 导致事情崩溃 这是
  • 为什么枚举中的静态和实例初始化块的行为与类中的行为不同

    在学习 Java 认证测试时 我了解到静态初始化块在加载类时按照源代码中出现的顺序运行一次 实例初始化块在每次创建实例时运行 并且构造函数中的代码每次运行之后创建一个实例 为了测试我创建了一个带有一些静态和实例初始化块的类以及一个带有打印内
  • 如何使用一列来确定从何处获取另一列的值?

    我正在尝试使用一列来确定将哪一列用作另一列的值 它看起来像这样 X Y Z Target 1 a b c X 2 d e f Y 3 g h i Z 我想要看起来像这样的东西 X Y Z Target TargetValue 1 a b c
  • 使用 time min() 和 time max() 从选定的某个值 id 表中删除不必要的时间

    我尝试删除不必要的时间 因为我只需要min and max 数据 来自选定的 ID 并且还通过 Stack Overflow 阅读了同样的问题 SQL 仅选择列上具有最大值的行 https stackoverflow com questio
  • 需要将图像固定到页面上的特定位置

    我需要将 gif 图像修复到主页上的特定位置 我已将图像放入 HTML 中 但 position fixed 并没有执行我想要的操作 页面内容的其余部分在图像下方滚动 我希望图像始终保持在同一个位置 免责声明 我对 HTML 和 CSS 几
  • 在php中使用fpdf/fpdi添加垂直文本

    我有一个脚本可以从数据库 blob 构建多页 pdf 这个pdf文件可以工作并输出良好的电流 但我需要在每页的左侧添加一条垂直的文本行 我已经设法让它适用于某些 pdf 文件 但对于某些 pdf 文件 我收到损坏的文件错误 有谁有不同的方法
  • Visual Studio 2013 更新 3 的问题

    我刚刚安装了 VS 2013 Update 3 现在打开解决方案时出现错误 The Microsoft VisualStudio Web Publish WebPublishPackage MircosoftVisualStudio Web
  • 如何借助 amp-story-consent 构建 AMP cookie 同意?

    我想向我的 AMP 静态网站添加 cookie 同意 我想利用模式对话框amp story consent可以提供给我 我研究了各种例子 也许最完整的是 示例文档https amp dev documentation examples us
  • 新 PayPal 结账时大型购物车的 PayPal HTML 按钮损坏

    几周以来 我们一直在与 PayPal 支付标准表格问题作斗争 我们多年来一直运行相同的代码 但注意到我们的较大发票 包含 20 多个项目 最近在提交给 PayPal 时出现白屏死机 沙盒中的测试和以前一样运行良好 在到处搜索后 我找不到任何
  • 桌面应用程序转换器

    我使用 Desktop Bridge 一段时间了 最 近我开始遇到问题 它停止构建软件包 我尝试将其安装在不同的虚拟机上 但遇到了相同的错误 PowerShell Error Record DesktopAppConverter error
  • 如何使 CATransform3dMakeRotation 以另一种方式旋转?并链在一起

    我第一次使用一些核心动画 在实现可以翻转的扑克牌的过程中 我决定使用CALayer显示内容 不确定我将如何获得两侧 但这是另一个问题 并且我需要能够翻转它 移动它等等 我在用着CATransaction取得了一些成功 在下面的代码片段中 卡
  • 以识别自定义 if 语句的方式解析纯文本

    我有以下字符串 string The man has NUM DOGS dogs 我通过以下函数运行它来解析它 function parse text string global num dogs string str replace NU
  • Visual Studio 2010 中的代码指标

    我想知道 Visual Studio 2010 中的代码指标有哪些可用选项 我知道可以在 IDE 中对代码运行手动指标 但是还有其他选项吗 我想做的是 我和我的团队正在运行 Team Foundation Server 2010 并且我们设
  • phpunit 测试类未找到错误,而类存在?

    这是我的目录结构 application modules admin models User php 这是我的用户模型类 class admin Model User User php 这是我的 UserTest 类 带有简单的 Asser
  • 计算直线与 x 轴之间的角度

    我目前正在为 Android 开发一个简单的 2D 游戏 我有一个位于屏幕中心的固定对象 我试图让该对象旋转并指向用户触摸的屏幕区域 我有代表屏幕中心的常量坐标 我可以获得用户点击的点的坐标 我正在使用此论坛中概述的公式 如何获得两点之间的
  • glsl 中的 mat3(mat4 矩阵)语句有何作用?

    我正在做每个片段照明 并且在校正法线向量时 我得到了以下代码 vec3 f normal mat3 MVI normal 其中 MVI 是 mat4 MVI transpose inverse ModelViewMatrix 那么返回之后是