Ответ 1
Не следует ли избегать такого подхода или стиля кодирования?
Почему?
Вся суть шейдеров заключается в том, чтобы вы могли делать то, что хотите, более эффективно выражать то, что хотите, и позволять себе больший контроль над оборудованием.
Вы никогда не должны бояться переориентировать что-то для другой функциональности. Текстуры не хранят цвета; они хранят данные, которые могут быть цветными, но это может быть и другое. Чем раньше вы перестанете думать о текстурах как изображениях, тем лучше вы будете в качестве графического программиста.
Используются GPU и API. Используйте его, как вы считаете нужным; не позволяйте, как вы думаете, что API должен использоваться для ограничения вас.
Shoudn't Я узнаю, как использовать OpenCL и использовать многопоточность GPU, чтобы напрямую указать и передать мой предназначенный код?
Вчера я бы сказал "да". Однако сегодня это было выпущено: OpenGL вычисляет шейдеры.
Тот факт, что OpenGL ARB и Khronos создали этот тип шейдера и т.д., - это молчаливое признание того, что взаимодействие OpenCL/OpenGL не является наиболее эффективным способом генерации данных для целей рендеринга. В конце концов, если бы это было так, в OpenGL не было бы необходимости иметь обобщенную вычислительную функциональность. Было 3 версии GL 4.x, которые этого не предоставили. Тот факт, что он здесь сейчас, в основном, говорит ARB: "Да, хорошо, нам это нужно".
Если ARB, укомплектованный многими людьми, которые производят аппаратное обеспечение, считает, что CL/GL-взаимодействие не является самым быстрым способом, то довольно ясно, что вы должны использовать вычислительные шейдеры.
Конечно, если вы пытаетесь что-то сделать прямо сейчас, это не поможет; только NVIDIA имеет поддержку шейдера. И даже это только в бета-драйверах. Пройдет много месяцев, прежде чем AMD получит поддержку для них, и еще многое еще до того, как эта поддержка станет достаточно прочной и стабильной для использования.
Тем не менее, вам не нужны вычислительные шейдеры для генерации данных. Люди использовали преобразовать обратную связь и геометрические шейдеры, чтобы делать LOD и отрисовку усечения для инстанционного рендеринга. Не бойтесь думать за пределами "OpenGL draws" материал ".