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_Freeglut - Fatal编程技术网

Python PyOpenGL照明颜色格式问题

Python PyOpenGL照明颜色格式问题,python,opengl,freeglut,Python,Opengl,Freeglut,我正在尝试用灯光制作一个3D旋转圆环体。旋转环面工作良好。照明是问题所在;如果我将GL_SPECULAR保留为其默认值,则灯光工作正常。当我尝试将它设置为RGBA浮点四重态(它应该是什么)时,它会说它的格式不正确。我尝试使用print(str(int(GL\u SPECULAR))打印GL\u SPECULAR的实际默认值。它返回浮点4611.0,我找不到有关这种颜色格式的任何信息。这是我的密码: from OpenGL.GLU import * from OpenGL.GL import *

我正在尝试用灯光制作一个3D旋转圆环体。旋转环面工作良好。照明是问题所在;如果我将
GL_SPECULAR
保留为其默认值,则灯光工作正常。当我尝试将它设置为RGBA浮点四重态(它应该是什么)时,它会说它的格式不正确。我尝试使用
print(str(int(GL\u SPECULAR))
打印
GL\u SPECULAR
的实际默认值。它返回浮点4611.0,我找不到有关这种颜色格式的任何信息。这是我的密码:

from OpenGL.GLU import *
from OpenGL.GL import *

glutInit()

GL_SPECULAR=(0.0,0.0,1.0,1.0)

def display():
    glClearColor(1,1,1,1)
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
    glEnable(GL_LIGHTING)
    glEnable(GL_LIGHT1)
    glEnable(GL_DEPTH_TEST)
    glLight(GL_LIGHT1,GL_SPECULAR,GL_POSITION)
    glutSolidTorus(0.3,0.5,10,10)
    glRotatef(1,1,1,0)
    glutSwapBuffers()
    glutPostRedisplay()

def main():
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA)
    glutCreateWindow('window')
    glutDisplayFunc(display)
    glutMainLoop()

if __name__=='__main__':
    main()
错误:

Traceback (most recent call last):
  File "C:\Users\trian\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\OpenGL\GLUT\special.py", line 130, in safeCall
    return function( *args, **named )
  File "c:\Users\trian\python\glut.py", line 15, in display
    glLight(GL_LIGHT1,GL_SPECULAR,GL_POSITION)
  File "src\latebind.pyx", line 39, in OpenGL_accelerate.latebind.LateBind.__call__
  File "src\wrapper.pyx", line 314, in OpenGL_accelerate.wrapper.Wrapper.__call__
  File "src\wrapper.pyx", line 311, in OpenGL_accelerate.wrapper.Wrapper.__call__
  File "C:\Users\trian\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\OpenGL\platform\baseplatform.py", line 415, in __call__
    return self( *args, **named )
ctypes.ArgumentError: ("argument 2: <class 'TypeError'>: wrong type", (GL_LIGHT1, (0.0, 0.0, 1.0, 1.0), c_float(4611.0)))
GLUT Display callback <function display at 0x000001EBCB08E820> with (),{} failed: returning None ("argument 2: <class 'TypeError'>: wrong type", (GL_LIGHT1, (0.0, 0.0, 1.0, 1.0), c_float(4611.0)))
PS C:\Users\trian\python> 
回溯(最近一次呼叫最后一次):
文件“C:\Users\trian\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9\u qbz5n2kfra8p0\LocalCache\localpackages\Python39\site Packages\OpenGL\GLUT\special.py”,第130行,在safeCall中
返回函数(*args,**已命名)
文件“c:\Users\trian\python\glut.py”,第15行,显示
glLight(GLU LIGHT1、GLU镜面反射、GLU位置)
文件“src\latebind.pyx”,第39行,在OpenGL中\u accelerate.latebind.latebind.\u调用__
OpenGL\u accelerate.wrapper.wrapper.\u调用中的文件“src\wrapper.pyx”,第314行__
OpenGL\u accelerate.wrapper.wrapper.\u调用中的文件“src\wrapper.pyx”,第311行__
文件“C:\Users\trian\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\Local Packages\Python39\site Packages\OpenGL\platform\baseplatform.py”,第415行,在调用中__
返回self(*args,**已命名)
ctypes.ArgumentError:(“参数2:错误类型”,(GL_LIGHT1,(0.0,0.0,1.0,1.0),c_float(4611.0)))
带()的GLUT显示回调,{}失败:返回无(“参数2::错误类型”,(glu LIGHT1,(0.0,0.0,1.0,1.0),c_float(4611.0)))
PS C:\Users\trian\python>
启用照明()时,关联的颜色将取自材质参数()

如果仍要使用当前颜色属性(由设置),则必须启用 和设置颜色材质参数():

glEnable(玻璃钢颜色材料)
glColorMaterial(GL_前部和后部、GL_环境和_漫反射)
另见

指令
glLight(GL\u LIGHT1、GL\u镜面反射、GL\u位置)
毫无意义。阅读e、 g:

glLightfv(GL_LIGHT1,GL_位置,[0,100,0,0])
glLightfv(GL_LIGHT1,GL_DIFFUSE,[1,0,0,1])#红色