我有一个右向量(glm :: vec3 - 称为右)和一个有效的投影矩阵P(glm :: mat4) 我现在需要在屏幕空间中使用正确的向量。这就是混乱开始的地方。 我的GLSL着色器矢量的制服是vec2。我以为我会用这一小段代码用glm计算C ++中的screenSpaceRightVector:
glm::vec4 screenSpaceRightVector = (camData->P * glm::vec4(camData->right,0.0f));
并使用以下行将其上传到着色器:
glUniform2f(glGetUniformLocation(shaderProgram, "screenSpaceRightVector"), screenSpaceRightVector.x, screenSpaceRightVector.y);
在我的例子中,右矢量是摄像机坐标系的x轴。
我对screenSpaceRightVector的计算是否正确?