Что означает синтаксис [] в этом случае? - PullRequest
1 голос
/ 29 мая 2019

Я учусь использовать шейдер в pyopengl через пример проекта на GitHubGist. Я столкнулся с синтаксисом «[]», и я не знаю, что это значит в этом случае.

Я знаю только одно использование "[]", которое индексирует массив.

    def initShader(self, vertex_shader_source, fragment_shader_source):
        # create program
        self.program=glCreateProgram()
        print('create program')
        printOpenGLError()

        # vertex shader
        print('compile vertex shader...')
        self.vs = glCreateShader(GL_VERTEX_SHADER)
        glShaderSource(self.vs, [vertex_shader_source])
        glCompileShader(self.vs)
        glAttachShader(self.program, self.vs)
        printOpenGLError()

Я не понимаю синтаксис "[]", используемый в glShaderSource ()

1 Ответ

2 голосов
/ 29 мая 2019

Функция glShaderSource принимает список фрагментов кода.
См. Документацию PyOpenGL glShaderSource:

glShaderSource( GLhandle(shaderObj),[bytes(string),...]) -> None

[vertex_shader_source]список строк, где каждая строка содержит исходный код glsl ([] генерирует List).
В этом случае список содержит только один элемент.Элементы списка объединяются и компилируются.

См. Также спецификацию C glShaderSource

...