【问题标题】:DirectX HLSL 9 Equalent to Opengl GLSL mat3*vec3DirectX HLSL 9 等同于 Opengl GLSL mat3*vec3
【发布时间】:2018-03-28 04:29:32
【问题描述】:

我正在尝试重写我在 OpenGL 中的着色器:

vec3 somevariable = mat3*vec3;

mat3 和 vec3 将是该类型的两个变量,但是当我尝试这样做时:

float3x3 * float3 

我在 HLSL 中遇到错误,这很好,但是当我尝试将数学转换为: (其中ca = mat3 而不是vec3)(float3x3 float3

float3 somevariable = float3(ca[0].x*no.x+ca[0].y*no.y+ca[0].z*no.z,ca[1].x*no.x+ca[1].y*no.y+ca[1].z*no.z,ca[2].x*no.x+ca[2].y*no.y+ca[2].z*no.z); 

这给出了与mat3*vec3 在 OpenGL 中不同的输出,有人知道为什么吗?谢谢:3

【问题讨论】:

    标签: opengl directx shader


    【解决方案1】:

    在矩阵是行优先还是列优先方面,GLSL 和 HLSL 之间似乎存在差异。

    如果没有看到错误,我会假设您的尺寸不匹配。您需要将向量定义为 float1x3 或交换向量和矩阵:

    1. float3x3 * float1x3float3x3 * transpose(float3)
    2. float3 * float3x3

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多