Адаптация кода OpenGL: переход от фиксированной функции к программируемому конвейеруDelphi , Графика и Игры , OpenGL
В современном OpenGL с удаленными deprecated функциями (т.е. ядром 3.1 или выше) матричный стек, функции манипуляции матрицами и функциональность, построенная на этих функциях (например, GLU), больше не доступны. Более подробную информацию о старом OpenGL можно найти здесь. Таким образом, функции, которые вы упоминаете, не будут доступны вам при использовании OpenGL 3.1 с совместимым с будущим контекстом или реализации, которая не экспонирует Современный способ использования матриц - просто использовать любую библиотеку линейной алгебры, которую у вас есть, и просто передавать результаты ваших вычислений в шейдер. Хорошей библиотекой является groovounet's GLM. Она также предоставляет перезаписи старых функций GLU, таких как Например, следующий шейдер содержит однородную 4x4 матрицу, представляющую модель-вид-проекцию:
На уровне API (т.е. в вашем приложении) вам потребуется передать атрибуты вершин в ваш шейдер всеми современными способами, которые предлагает OpenGL, самый очевидный - использовать объект буфера вершин в качестве хранилища данных и (обязательно с OpenGL 3.2) объект массива вершин, описывающий, как извлекать атрибуты из этого хранилища данных. Конечно, вам также нужно вычислить все необходимые данные, такие как матрица MVP, и передать их в шейдер с помощью либо объекта буфера униформ, либо классической семьи функций В общем, для получения подробной информации о современном OpenGL обратитесь к официальному wiki и разным туториалам в Интернете, таким как этот, который я склонен рекомендовать (потому что знаю, что он хорош). Пример кода на Object Pascal (Delphi) для вычисления матрицы нормали:
Этот код извлекает верхний левый 3x3 матрицы, афинно-инвертирует и транспонирует матрицу, вычисляет детерминант 3x3 матрицы и нормализует матрицу. Результат записывается в ту же матрицу ModelViewMatrix. переход от фиксированной функции к программируемому конвейеру в OpenGL. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |