Я использую Vulkan с C++ на платформе Linux (Arch). Я следую учебному пособию по Vulkan, доступному на сайте vulkan-tutorial.com, но вместо того, чтобы копировать код построчно, я структурирую его на несколько классов, чтобы лучше понять каждую часть API и его обязанности. На данный момент я успешно реализовал руководство, включая Наложение текстур. Теперь я перехожу к буферизации глубины.
Код компилируется и выполняется без ошибок, но выходные данные не соответствуют моим ожиданиям. Вместо отображения двух квадратов — один наложен поверх другого — отображается только один текстурированный квадрат. Хотя возможно, что оба квадрата отображаются друг над другом, я считаю, что точно следовал инструкциям руководства по буферизации глубины.
Структура и настройка проекта
В main.cpp я создаю окно GLFW и определяю вершины и индексы, которые затем передаются в класс VulkanApplication. Этот основной класс определен в application.cpp и отвечает за:
- Создание экземпляров общих указателей и управление ими для каждого соответствующего класса (например, GraphicsPipeline< /code>, DepthManager и т. д.) в его конструкторе.
- Управление порядком разрушения в его деструкторе.
- Обработка выполнения окна, Обновления универсального буферного объекта (UBO) и обработка цепочки обмена.
Сводка проблем
Пока код компилируется и запускается успешно без ошибок, он отображает только один вращающийся текстурированный квадрат вместо двух квадратов, наложенных друг на друга, как ожидалось. Я подозреваю, что проблема может быть связана с моей реализацией буферизации глубины, но я не уверен, где мой код отличается от предполагаемого результата руководства.
Вопрос:
Как я могу правильно реализовать буферизацию глубины для этого варианта использования и какие аспекты моего кода могут вызывать этот непредвиденный результат?
Подробнее здесь: https://stackoverflow.com/questions/791 ... anapi-in-c
Мобильная версия