【发布时间】:2020-03-20 13:49:15
【问题描述】:
我在安卓设备上运行了一个 vulkan 渲染器,结果图像是颠倒的。 我不想在 VkViewport 定义中放置负高度,因为有代码和 cmets 建议将矩阵反转为 Y。
我尝试在以下代码中反转 mvp[5] 矩阵数组的符号,但在渲染图像中出现了剔除问题。
// update opengl projection matrix to vulkan conventions:
// Vulkan clip space has inverted Y and half Z ( Z - [0, 1] instead of [-1, 1])
float zNear = r_znear->value;
float m10 = -zFar / (zFar - zNear);
float py = tan(fovY * (M_PI / 360.0f));
float px = tan(fovX * (M_PI / 360.0f));
mvp[0] = 1.0f / px;
mvp[1] = 0;
mvp[2] = 0;
mvp[3] = 0;
mvp[4] = 0;
mvp[5] = -1.0f / py;
mvp[6] = 0;
mvp[7] = 0;
mvp[8] = 0;
mvp[9] = 0;
mvp[10] = m10;
mvp[11] = -1.0f;
mvp[12] = 0;
mvp[13] = 0;
mvp[14] = zNear * m10;
mvp[15] = 0;
我知道z轴以某种方式倒置了,但目前我不知道如何解决这个问题。
【问题讨论】: