PyOpenGL:glUniform1f提供TypeE

2024-10-03 23:23:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我的问题是,当我想调用glUniform1f()时,会出现以下错误:

ctypes.ArgumentError: argument 1: <class 'TypeError'>: wrong type

我只是不知道是什么导致了这一切。你知道吗

我的代码:

# initialization
glutInit()  # initialize glut
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE)
glutInitWindowSize(width, height)  # set window size
glutInitWindowPosition(0, 0)  # set window position
window = glutCreateWindow(b"window")  # create window with title


def make_shader(type, shader_src):
    shader = glCreateShader(type)
    glShaderSource(shader, shader_src)
    glCompileShader(shader)
    shader_ok = None
    #show_info_log(shader,glGetShaderiv, glGetShaderInfoLog)
    glGetShaderiv(shader, GL_COMPILE_STATUS, shader_ok)
    if(not shader_ok):                                  ####shader_ok is still None
        glGetShaderInfoLog(shader)
        print("failed to compile shader")
    return shader



program = make_program(vertex_shader, fragment_shader)
texture = 0.33
uniform_texture = glGetUniformLocation(program, b"alpha[0]")

glViewport(0, 0, width, height)
glUseProgram(program)

glUniform1f(uniform_texture, texture)      ####Fails with TypeError: Wrong type

我也不能从这里得到任何日志:

glGetShaderInfoLog(shader)

还是这个

log = ctypes.ARRAY(ctypes.c_char, 100)
leng = ctypes.c_int(1)
glGetProgramiv(program, GL_INFO_LOG_LENGTH, leng)
glGetProgramInfoLog(program, leng, leng, log)

但是,不使用glUniform1f()的带有着色器的代码示例仍然有效


Tags: 代码logtypeokwindowprogramctypeswidth