Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有人能帮助解决pyopengl中的顶点着色器错误吗_Python_Opengl_Glsl_Pyglet_Vertex Shader - Fatal编程技术网

Python 有人能帮助解决pyopengl中的顶点着色器错误吗

Python 有人能帮助解决pyopengl中的顶点着色器错误吗,python,opengl,glsl,pyglet,vertex-shader,Python,Opengl,Glsl,Pyglet,Vertex Shader,我在导致错误的过程中特别指出了这段代码 self.vertex_shader_source = """ #version 130 in layout (location = 0) vec3 position; in layout (location = 1) vec3 color; out vec3 newColor; void main() { gl_Position

我在导致错误的过程中特别指出了这段代码

    self.vertex_shader_source = """
    #version 130
    in layout (location = 0) vec3 position;
    in layout (location = 1) vec3 color;
            
    out vec3 newColor;
    void main()
    {
        gl_Position = vec4(position, 1.0f);
        newColor = color;
    }
    """
    
    self.fragment_shader_source = """
    #version 130
    in vec3 newColor;
    
    out vec4 outColor;
    void main()
    {
        outColor = vec4(newColor, 1.0f);
    }
    """
错误

Traceback (most recent call last):
File "/home/awesomenoob/Coding/Python/Rendering/Opengl-tri.py", line 23, in <module>
window = MyWindow(1280, 720, "yoot", resizable=True)
File "/home/awesomenoob/Coding/Python/Rendering/Opengl-tri.py", line 10, in __init__
self.triangle = Triangle()
File "/home/awesomenoob/Coding/Python/Rendering/Triangle.py", line 35, in __init__
shader = 
OpenGL.GL.shaders.compileProgram(OpenGL.GL.shaders.compileShader(self.vertex_shader_source, GL_VERTEX_SHADER),
File "/home/awesomenoob/.local/lib/python3.7/site-packages/OpenGL/GL/shaders.py", line 241, in compileShader
shaderType,
OpenGL.GL.shaders.ShaderCompilationError: ('Shader compile failure (0): b"0:3(12): error: 
syntax error, unexpected \'(\', expecting \'{\'\\n"', [b'\n        #version 130\n        in 
layout (location = 0) vec3 position;\n        in layout (location = 1) vec3 color;\n                
\n        out vec3 newColor;\n        void main()\n        {\n            gl_Position = 
vec4(position, 1.0f);\n            newColor = color;\n        }\n        '], 35633)
回溯(最近一次呼叫最后一次):
文件“/home/awesomenoob/Coding/Python/Rendering/Opengl tri.py”,第23行,在
window=MyWindow(1280720,“yoot”,可调整大小=True)
文件“/home/awesomenoob/Coding/Python/Rendering/Opengl tri.py”,第10行,在__
self.triangle=triangle()
文件“/home/awesomenoob/Coding/Python/Rendering/Triangle.py”,第35行,在__
着色器=
OpenGL.GL.shaders.compileProgram(OpenGL.GL.shaders.compileShader(self.vertex\u shader\u source,GL\u vertex\u shader),
compileShader中的文件“/home/awesomenoob/.local/lib/python3.7/site packages/OpenGL/GL/shaders.py”,第241行
shaderType,
OpenGL.GL.shaders.ShaderCompilationError:(“着色器编译失败(0):b”0:3(12):错误:
语法错误,意外的\'(\),应为\'{\'\\n',[b'\n\35;版本130\n
布局(位置=0)vec3位置;\n在布局(位置=1)vec3颜色中;\n
\n out vec3 newColor;\n void main()\n{\n gl\u位置=
vec4(位置,1.0f);\n newColor=color;\n}\n'],35633)

如果你能帮助我理解我做错了什么,那将是一个巨大的帮助。我只是想学习python中的pyglet/opengl

自GLSL 3.30版以来,顶点着色器属性位置都受支持。比较和。如果可能,使用GLSL 3.00

或者删除布局限定符:

#版本130
在vec3位置;
vec3颜色;
输出vec3新颜色;
void main()
{
gl_位置=vec4(位置,1.0f);
新颜色=颜色;
}
在链接程序之前使用设置属性位置,或在链接程序之后使用获取属性位置

e、 g:

shader=OpenGL.GL.shaders.compileProgram(…)
position_loc=GLGetAttriblLocation(着色器,b'position')
color\u loc=glGetAttribLocation(着色器,b'color')

语法指南说它需要
布局(location=0)在vec3位置;
@TimRoberts No。从3.30版开始,两者都很好。Thx太多了。虽然我不需要glBind或glGet。@AwesomeNoob999不需要。您需要
glbindAttriblation
glgetAttriblation
。很可能属性索引是0和1。但是,不能保证它会。您的程序可以在您的计算机上运行您的系统,但它可能会在另一个系统上失败。那么,我应该将它们放在代码中的什么位置?它显示此错误“glGetAttriblLocation(shader,“position”)ctypes.ArgumentError:Argument2::error type”问题名称无法获取属性位置pyglet