Итак, я столкнулся с некоторыми странными вещами, когда имел дело с вулканской системой координат. Я привык к системе координат opengl, поэтому, когда я создал видовой экран в vulkan, я сделал
VkViewport viewport = {};
viewport.width = 800;
viewport.height = -600;
viewport.x = 0.0f;
viewport.y = 600;
viewport.minDepth = 0.0f;
viewport.maxDepth = 1.0f;
. Таким образом, я переворачиваю ось y, поэтому я предполагаю, что положительная ось X находится справа от экран, положительная ось Y направлена вверх экрана, а положительная ось Z указывает на экран. Я прав? Но потом, когда я нарисовал простой квадрат, используя четыре вершины,
(150, 50, 0.0), (50.0, 50, 0.0), (50.0, -50, 0.0), (150.0, -50, 0.0)
с матрицей преобразования модели в качестве тождества, и просмотр матрицы как
glm::lookAt(glm::vec3(0, 0, -500), glm::vec3(0, 0, 0), glm::vec3(0, 1, 0));
и матрицы проекции
glm::perspective(glm::radians(45.0f), m_swapchainExtent.width / (float)m_swapchainExtent.height, 0.1f, 1000000.0f);
Я получил квадрат, который на самом деле находится на левой стороне изображения. Как это объяснить, или просто положительная ось X, фактически указывающая влево?