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 矩阵)语句有何作用? 的相关文章

  • OpenGL中背景对象绘制在前景对象前面?

    为了测试目的 我们假设我画了 2 个茶壶glutSolidTeapot 像这样 glColor3f 1 0f 0 0f 0 0f Red teapot glutWireTeapot 1 0f glColor3f 0 0f 1 0f 0 0f
  • 渲染具有透明度的纹理时,OpenGL 不需要的像素

    我已经为这个问题苦苦挣扎了一段时间了 当我使用 OpenGL 渲染 2D 纹理 在无透明度和部分透明度之间的过渡上具有透明度值 时 我得到了一些烦人的灰色像素 我认为这是像素值插值的产物 关于如何改进这一点有什么想法吗 I m attach
  • 渲染缓冲区大于窗口大小 - OpenGL

    我正在尝试绘制大于屏幕尺寸 即 320x480 的渲染缓冲区 512x512 执行 glReadPixels 后 图像看起来是正确的 除非图像的尺寸超过了屏幕尺寸 在本例中 超过了水平 320 和垂直 480 是什么原因导致这种异常现象呢
  • matplotlib:渲染到缓冲区/访问像素数据

    我想使用 matplotlib 生成的图作为 OpenGL 中的纹理 到目前为止 我遇到的 matplotlib 的 OpenGL 后端要么不成熟 要么已经停止使用 所以我想避免使用它们 我当前的方法是将图形保存到临时 png 文件中 并从
  • 我可以在 WebGL 的 GLSL 中使用什么作为数组索引?

    是否只允许使用常量 或者我可以将其用于循环索引或任何其他动态值 In WebGL GLES2 是的 只允许使用常量 但是 如果您的代码可以展开 无论是由您自己还是由编译器 那么它就被视为一个常量 并且您有一个解决方法 例如 问题 unifo
  • Qt 5.5 QOpenGLWidget 链接错误未链接任何 openGL 调用

    我尝试使用 Qt 5 5 1 构建一个简单的 OpenGL 应用程序 一切都很好 直到我尝试使用 glClearColor 等 openGL 本机函数调用 该小部件实际上编译并产生黑屏 但在我尝试使用任何 openGL 本机函数后 它甚至不
  • WGL:没有双缓冲 + 多重采样 = 失败?

    我通常使用创建像素格式wglChoosePixelFormatARB 与这些论点 除其他外 WGL DOUBLE BUFFER ARB GL TRUE WGL SAMPLE BUFFERS ARB GL TRUE WGL SAMPLES A
  • 为什么 cudaGLSetGLDevice 失败,即使它是在 main 函数的第一行中调用的

    我想使用 OpenGL 和 CUDA 之间的互操作性 我知道 正如一些教程所说 第一步是选择设备 但是 当我在主函数的第一行中调用 cudaGLSetGLDevice 0 时 程序退出并显示信息 cudaSafeCall 运行时 API 错
  • 在着色器中旋转法线

    我有一个场景 其中有多个具有各自位置和旋转的模型 给定法线 着色器对每个像素应用简单的双向照明 那是我的顶点着色器 version 150 in vec3 position in vec3 normal in vec2 texcoord o
  • OpenGL纹理渲染与原始不匹配

    我正在尝试使用 OpenGL 渲染纹理 我用作测试的纹理是白色背景上的一堆黑色矩形 如下所示 然而 在渲染时 纹理似乎被复制并叠加在其自身之上多次 我使用以下方法设置场景 std string vertexSource ShaderLoad
  • 使用顶点缓冲区对象 (VBO) 渲染 Kinect 点云

    我正在尝试制作一个动态点云可视化工具 使用 Kinect 传感器每帧更新这些点 为了抓取帧 我使用 OpenCV 和 GLUT 来显示 OpenCV API 对于点 xyz 位置返回 640 x 480 float 对于 rgb 颜色数据返
  • 为贝塞尔曲线中的每个点绘制切线

    我设法绘制了一条贝塞尔曲线 如下所示 glColor3f 0 1 0 glBegin GL LINE STRIP for int i 3 i lt nPt i 3 glColor3f 0 0 0 for float k 0 k lt NLI
  • Retina 显示屏中具有 QOpenGLWIdget 的 Qt MainWindow 显示错误大小

    我有一个 Qt 应用程序MainWindow 我嵌入一个QOpenGLWidget在里面 一切正常 直到我开始使用 Apple Retina 显示屏并在高 DPI 模式下运行我的应用程序 我的QOpenGLWidget只是它应该具有的大小的
  • 进行亚像素平移时,2D 纹理会扭曲

    我想知道一个理论推理为什么这是可能的 几何体的平移与纹理映射有何关系 我只能在进行子像素平移时注意到这种效果 如果通过整个像素平移 纹理看起来很好 我正在使用正交投影 GL CLAMP TO EDGE GL NEAREST 片段着色器是hi
  • 无法在 Linux 的 NetBeans 中编译 C++ 和 OpenGL (GLFW) 的简单源代码

    我开始学习 OpenGL glfw 我从教程中复制源代码并尝试编译它 但出现了错误 我想我已经正确安装了所有头文件 glm glfw 等 这是我的来源 我没有在头文件中使用这些字符 include iostream include stdi
  • 如何使用OpenGL数组纹理?

    我正在尝试在OpenGL中使用精灵表 通过数组纹理实现它这就是我加载纹理的方式 QImage image image load C QtProjects project images spritesheet png png const un
  • 是否可以在 Mac OS X 上构建 FreeGLUT?

    我正在做一些关于 OpenGL 的教程 http www arcsynthesis org gltut Basics Tutorial 2001 html那个使用FreeGLUT http freeglut sourceforge net
  • 新显卡上的 nvoglv32.dll 中的绘制调用崩溃

    几天前 由于一些硬件更改 我设置了计算机并安装了新的 Windows 8 副本 其中 我将显卡从 Radeon HD 7870 更改为 Nvidia GTX 660 再次设置 Visual Studio 11 后 我从 Github 下载了
  • OpenGL 新手: glutMouseFunc

    我试图在单击鼠标后更改球体位置 但在使用 glutMouseFunc 中的 x 和 y 时它不起作用 以下是代码 include stdafx h include
  • OpenGL/GLSL - 纹理过滤的实现

    我想在 GLSL 着色器中自己实现纹理过滤 min 和 magfilter 因为我想使用 image load and store 而不是采样器 而且我想以特殊方式处理未定义的像素 并且我正在寻找一篇文章或者这样讨论过滤过程 我记得如何从我

随机推荐

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

    我有一组整数 我想找到最长递增子序列 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 那么返回之后是