在这种情况下,语法[]是什么意思?

时间:2019-05-29 15:12:22

标签: python python-3.x shader pyopengl

我正在通过GitHubGist上的示例项目来学习如何在pyopengl中使用着色器。我遇到了“ []”语法,在这种情况下我不知道这意味着什么。

我只知道索引数组的“ []”的用法。

    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 个答案:

答案 0 :(得分:2)

函数glShaderSource接受一系列代码片段。
请参阅glShaderSource的PyOpenGL文档:

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

[vertex_shader_source]是字符串列表,其中每个字符串包含glsl源代码([]生成List)。
在这种情况下,列表仅包含一个元素。 列表的元素是串联并编译的。

另请参见glShaderSource的C规范