2013-03-21 3 views
6

Есть ли способ получить доступ к шейдерам, прикрепленным к программе? То есть, учитывая программу, я могу сделать что-то вроде:OpenGL Получение шейдера, присоединенного к программе

vertexShader = getVertexShaderFromProgram(program); 

(я хотел бы войти статус шейдер компиляции в моей функции, которая проверяет мою программу, но я только сохранить ссылку на программу, а не шейдеры .)

ответ

8
  1. glGetAttachedShaders(), чтобы получить имена шейдеров, присоединенных к данному программному объекту.

  2. glGetShaderiv(..., GL_SHADER_TYPE, ...), чтобы получить тип (вершина, геометрия, фрагмент) шейдера.

  3. glGetShaderiv(..., GL_SHADER_SOURCE_LENGTH, ...) на каждое имя шейдера, чтобы выяснить, как долго источник.

  4. glGetShaderSource(), чтобы получить исходную строку для каждого прикрепленного шейдера.

EDIT: Если все, что вам нужно имена шейдерных & типов вы можете остановить после шага 2.

+0

Что происходит, если объекты шейдерных были удалены? – Ben

Смежные вопросы