ModernGL 渲染 returns GL_INVALID_ENUM 错误?
ModernGL render returns GL_INVALID_ENUM error?
我使用 GLES 和 EGL 在 C 中编写了这个 GPU 代码,运行 很好。我现在正尝试使用 ModernGL 将此 GPU 代码移植到 python,除非在我调用渲染函数之后,ctx returns 出现 GL_INVALID_ENUM 错误。我正在使用带有 Mali400 GPU 的 NanoPi M1 Plus,它仅支持 OpenGL 版本 120。
GPU 代码:
import moderngl
import numpy as np
ctx = moderngl.create_context(standalone=True,
backend='egl'
)
prog = ctx.program(
vertex_shader='''
#version 120
attribute vec4 vPosition;
void main() {
gl_Position = vPosition;
}
''',
fragment_shader='''
#version 120
uniform float Aarr[1000];
void main() {
int my_index = int(gl_FragCoord[0]);
float ex = exp(-Aarr[my_index]);
float result = 1 / (1.0 + ex);
gl_FragColor = vec4(result, 0.0, 0.0, 1.0);
}
''',
)
vertices = np.array([
-1.0, -1.0, 1.0,
-1.0, 1.0, 1.0,
1.0, 1.0, 1.0,
-1.0, -1.0, 1.0,
1.0, 1.0, 1.0,
1.0, -1.0, 1.0
],
dtype='f4',
)
vbo = ctx.buffer(vertices)
vao = ctx.simple_vertex_array(prog, vbo, 'vPosition')
A_vec = prog['Aarr']
A_vec.write(np.random.uniform(-256,256,[1000]).astype('f4'))
fbo = ctx.simple_framebuffer((1000, 2), components=4)
fbo.use()
fbo.clear(0.0, 0.0, 0.0, 1.0)
vao.render()
print("Error after render: ",ctx.error)
输出:
libGL error: MESA-LOADER: malformed or no PCI ID
libGL error: unable to load driver: mali_drm_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: mali_drm
Error after render: GL_INVALID_ENUM
任何帮助将不胜感激,因为这是我最后一年的项目所必需的。
Mali400 GPU which supports only OpenGL version 120
完全不支持OpenGL;它支持 OpenGL ES 1.1 和 2.0。
我使用 GLES 和 EGL 在 C 中编写了这个 GPU 代码,运行 很好。我现在正尝试使用 ModernGL 将此 GPU 代码移植到 python,除非在我调用渲染函数之后,ctx returns 出现 GL_INVALID_ENUM 错误。我正在使用带有 Mali400 GPU 的 NanoPi M1 Plus,它仅支持 OpenGL 版本 120。
GPU 代码:
import moderngl
import numpy as np
ctx = moderngl.create_context(standalone=True,
backend='egl'
)
prog = ctx.program(
vertex_shader='''
#version 120
attribute vec4 vPosition;
void main() {
gl_Position = vPosition;
}
''',
fragment_shader='''
#version 120
uniform float Aarr[1000];
void main() {
int my_index = int(gl_FragCoord[0]);
float ex = exp(-Aarr[my_index]);
float result = 1 / (1.0 + ex);
gl_FragColor = vec4(result, 0.0, 0.0, 1.0);
}
''',
)
vertices = np.array([
-1.0, -1.0, 1.0,
-1.0, 1.0, 1.0,
1.0, 1.0, 1.0,
-1.0, -1.0, 1.0,
1.0, 1.0, 1.0,
1.0, -1.0, 1.0
],
dtype='f4',
)
vbo = ctx.buffer(vertices)
vao = ctx.simple_vertex_array(prog, vbo, 'vPosition')
A_vec = prog['Aarr']
A_vec.write(np.random.uniform(-256,256,[1000]).astype('f4'))
fbo = ctx.simple_framebuffer((1000, 2), components=4)
fbo.use()
fbo.clear(0.0, 0.0, 0.0, 1.0)
vao.render()
print("Error after render: ",ctx.error)
输出:
libGL error: MESA-LOADER: malformed or no PCI ID
libGL error: unable to load driver: mali_drm_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: mali_drm
Error after render: GL_INVALID_ENUM
任何帮助将不胜感激,因为这是我最后一年的项目所必需的。
Mali400 GPU which supports only OpenGL version 120
完全不支持OpenGL;它支持 OpenGL ES 1.1 和 2.0。