GLint linked:

// Создание вершинного и фрагментного шейдерных объектов

brickVS - glCreateShaderObjectARBCGL VERTEX5HADER ARB): brickFS = glCreateShaderObjectARB(GL>RAGMENTJHADER_ARB):

// Загрузка исходного кода шейдеров s шейдерные объекты

glShaderSourceARBtbnckVS. 1. torickVertex. NULL) : glShaderSourceARBCbrickFS. 1. SbrickFragment. MULL);

// Компиляция вершинного шейдера кирпичной стены // и вывод на экран информационного журнала

glCompi1eShaderARB(brickVS);

printOpenGLErrprO : // проверка на ошибки OpenGL

glGetObjectParameterivARBCbnckVS.
GL_OBJECT_COMPILE_STATUS_ARB, ÄvertCompiled): printlnfoLog(brickVS):

II Компиляция фрагментного шейдера кирпичной стены II и вывод на экран информационного журнала

glCompileShaderARB(bnckFS) :

printOpenGLErrorO : // проверка на ошибки OpenGL

glGetObjectParameterivARB(brickFS.
GL_OBJECT_COMPILE_STATUS_ARB. SfragCompi1ed): printlnfoLog(brickFS):
if (!vertCompiled || IfragCompiled) return 0:

// Создание программного объекта

//и присоединение к нему шейдерных объектов

brickProg = glCreateProgramObjectARBC):

продолжение &

API языка шейдеров OpenGL

Листинг 7.2 (продолжение)

glAttachObjectARB(brickProg. brickVS): gl AttachObjectARBtbrickProg. brickFS);

// Компоновка программного объекта

//и вывод на экран информационного журнала

gl Li nkPrograinARB(bri ckProg):

printOpenGLErrorO: // проверка на ошибки OpenGL

glGetObjectParameterivARBCbrickProg.
GL OBJECT_LINK_STATUS_ARB, &1inked): printlnfoLogCbrickPr.og):
if (!Hnked) return 0:

// Установка программного объекта как текущего

gl UsePrograrnObjectARBCbri ckProg):

// Установка начальных значений uniform-переменных

glUniform3fARB(getUniLoc(brickProg. "BrickColor"). 1.0. 0.3. 0.2):
glUnifonri3fARB(getUniLoc(brickProg, "MortarColor"). 0.85. 0.86. 0.84):
glUniform2fARB(getUniLoc(bnckProg. "BrickSize"). 0.30. 0.15):
glUniform2fARB(getUniLoc(brickProg, "BrickPct").. 0.90. 0.85):
glLiniform3fARB(getUnlLoc(br1ckProg, "LightPosition"). 0.0, 0.0. 4.0):

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