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