Системы координат OpenGL Shader - PullRequest
       14

Системы координат OpenGL Shader

0 голосов
/ 11 октября 2018

Я изучаю OpenGL на странице: https://learnopengl.com/Getting-started/Coordinate-Systems Например, они используют 3 матрицы (Модель, Вид, Проекция) и помещают все в шейдерную программу.Но может калькулятор MVPmat = Projection * View * Model на CPU и один раз нажать на шейдер.

  1. Использовать 3 матрицы:

    • + Использовать GPU.
    • + Очистить.
    • - Нужен калькулятор MVPmat для всех пикселей.
    • - Использовать 16- или 32-разрядный калькулятор.
  2. Использовать MVPmat = проекция * Вид * Модель на ЦП.

    • + Один раз для каждой модели.
    • + Использовать 64-разрядный калькулятор.
    • -Использовать ЦП.
    • -Не чисто.

Какой путь лучше?Я не могу найти ответ на GG или, может быть, я тупой.

P / S Извините за мой английский.Спасибо.

1 Ответ

0 голосов
/ 11 октября 2018

Я не совсем уверен, что вы подразумеваете под "чистым" против "не чистым".Я также не уверен, почему именно вы думаете, что вычисление матрицы модель-представление-проекция на ЦП означает, что это должно быть сделано с использованием 64-битной точности.Вряд ли когда-нибудь понадобится 64-битная арифметика с плавающей точкой, когда речь идет о вещах, связанных с графикой.На самом деле, вряд ли нужно больше, чем с плавающей точкой одинарной точности в целом.Если, например, вы не занимаетесь научными вычислениями, где вам действительно нужна эта точность ...

Чтобы ответить на ваш вопрос: если для того, что вы хотите сделать, достаточно использовать комбинированную матрицу Модель-Вид-Проекцияиспользование комбинированной матрицы представляется наилучшим решением.Вы должны вычислить объединенную матрицу только один раз.Вам нужно только загрузить одну матрицу в графический процессор вместо трех.Вам нужно только получить одну матрицу в вашем шейдере вместо трех.Вам нужно сделать только одно матрично-векторное умножение в шейдере вместо трех ...

...