□ Обеспечение легкости разработки программ.

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

2.4.2. Основы С

Как говорилось ранее, язык шейдеров OpenGL основан на синтаксисе языка программирования ANSI С, и на первый взгляд его программы выглядят очень похожими на программы, написанные на языке С. Это было сделано умышленно, так как обычно разработчики графических программ используют С и/или С++, и им будет легче изучать и использовать язык шейдеров OpenGL.

Основная структура программы на языке шейдеров OpenGL аналогична структуре С-программы. Точкой входа группы шейдеров является функция void main С ), тело которой находится внутри фигурных скобок. Константы, идентификаторы, операторы, выражения и предложения - понятия, идентичные для языка шейдеров и языка С. Организация потока в циклах, i f-then-el se и вызовы функций в языке шейдеров практически такие же, как в С.

2.4.3. Дополнения к языку С

В языке шейдеров OpenGL есть множество возможностей, которые отражают его специализированиость как языка для реализации графических алгоритмов. Далее перечислены возможности языка шейдеров OpenGL, которых нет в ANSI С.

Векторные типы здесь поддерживаются для чисел с плавающей запятой, целых и булевых значений. Для чисел с плавающей запятой они называются vec2 (два числа), vec3 (три числа), vec4 (четыре числа). С этими типами так же легко выполнять арифметические операции, как и со скалярными величинами. Чтобы сложить векторы V и V , нужно просто написать: vl + v2. К отдельным элементам


⇐ Предыдущая| |Следующая ⇒