Я был потрясен, когда прочитал это (из OpenGL wiki):
glTranslate, glRotate, glScale
Являются ли эти аппаратные средства ускоренными?
Нет, нет известных графических процессоров, которые выполните это. Драйвер вычисляет матрицу на CPU и загружает ее в GPU.
Все остальные операции матрицы сделанные на процессоре: glPushMatrix, glPopMatrix, glLoadIdentity, glFrustum, glOrtho.
Вот почему эти функции считаются устаревшими в GL 3.0. У вас должна быть своя математическая библиотека, создайте собственную матрицу, загрузите свою матрицы в шейдер.
В течение очень долгого времени я думал, что большинство функций OpenGL используют графический процессор для вычисления. Я не уверен, что это распространенное заблуждение, но через некоторое время это имеет смысл. Старые функции OpenGL (2.x и старше) действительно не подходят для приложений реального мира из-за слишком большого количества переключателей состояния.
Это заставляет меня понять, что, возможно, многие функции OpenGL вообще не используют графический процессор.
Итак, вопрос:
Какие вызовы функций OpenGL не используют графический процессор?
Я считаю, что знание ответа на вышеупомянутый вопрос поможет мне стать лучшим программистом с OpenGL. Пожалуйста, поделитесь некоторыми своими соображениями.
Edit:
Я знаю, что этот вопрос легко приводит к уровню оптимизации. Это хорошо, но это не намерение этого вопроса.
Если кто-то знает набор GL-функций на определенной популярной реализации (как предлагал AshleysBrain, nVidia/ATI и, возможно, зависит от ОС), которые не используют GPU, то, что мне нужно!
Возможные руководства по оптимизации приводятся позже. Давайте сосредоточимся на функциях для этой темы.
Edit2:
В этом разделе речь не идет о том, как работают матричные преобразования. Для этого есть другие темы.