ATTRIBUTE // только для вершины
VARYING
UNIFORM
type_specifier:
VOID
FLOAT
INT
BOOL
VEC2
VEC3
VEC4
BVEC2
BVEC3
BVEC4
IVEC2
IVEC3
IVEC4
MAT2
MAT3
MAT4
SAMPLER1D
SAMPLER2D
SAMPLER3D
SAMPLERCUBE
SAMPLER1DSHAD0W
SAMPLER2DSHAD0W struct_speci fier TYPEJAME
struct_speci fier:
STRUCT IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE .
STRUCT LEFT_BRACE struct_declaration_list RIGHT_BRACE
struct_decl arati onj i st: struct_declaration
struct_declaration_list struct_declaration
struct_declaration:
type_specifier struct_declarator_list SEMICOLON
struct_declarator J i st: struct_declarator
struct_declaratorJist COMMA struct_declarator
struct_declarator:
IDENTIFIER
IDENTIFIER LEFTJ3RACKET constant_expression RIGHT_BRACKET
initializer:
assignment_expression
declaration_statement: declaration
statement:
compound_statement
simple_statement
// оператор 'goto' и метки не поддерживаются
simple_statement:
declaration__statement
expression_statement
selection_statement
iteration_statement
jump_statement
compound_statement:
LEFT_BRACE RIGHT_BRACE
LEFT_BRACE statement_list RIGHT_BRACE
statement_no_new_scope:
compound_statement_no_new_scope
simple_statement
compound_statement_no_new_scope:
LEFT_BRACE RIGHT_BRACE
LEFT_BRACE statement__l i st RIGHT_BRACE
statement_list:
statement
statementjist statement
expressi on_statement:
SEMICOLON
expression SEMICOLON
selecti on_statement:
IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement
selecti on_rest_statement: statement ELSE statement statement
// оператор 'switch' не поддерживается
condition:
expression
fully_specified_type IDENTIFIER EQUAL initializer
i terati on_statement:
WHILE LEFT_PAREN condition RIGHT_PAREN statement_no_new_scope DO statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON
FOR LEFT_PAREN for_init_statement for_rest_statement RIGHT_PAREN
statement_no_new_scope
for_init_statement: expression_statement declaration_statement
conditionopt: condition /* пусто */
for_rest_statement:
conditionopt SEMICOLON conditionopt SEMICOLON expression
jump_statement:
CONTINUE SEMICOLON BREAK SEMICOLON RETURN SEMICOLON RETURN expression SEMICOLON
DISCARD SEMICOLON // только для фрагментного шейдера
// оператор 'goto' не поддерживается
translation_unit:
external_declaration translation_unit external_declaration
external_declaration: function_definition declaration
function_definition:
function_prototype compound_statement_no_new_scope
Приложение Б Справочник функций API
В этом разделе содержатся подробное описание функций OpenGL для создания, компиляции, компоновки шейдеров, написанных на языке шейдеров OpenGL, и манипулирования ими, а также описание функций для работы с дополнительными атрибутами вершин и uniform-переменными.
Права на эти материалы принадлежат компании 3Dlabs, Inc., Ltd. Перепечатано с разрешения 3Dlabs.
glAttachObjectARB
Название
glAttachObjectARB - связывает шейдерный объект с программным объектом.
Прототип функции
void glAttach0bjectARB(GLhand1eARB program. GLhandleARB shader)
Параметры
program Дескриптор программного объекта, с которым связывается шейдерный объект, shader Дескриптор связываемого шейдерного объекта.