pyopengl 中 glEnable(GL_MULTISAMPLE) 时的无效操作

Invalid operation when glEnable(GL_MULTISAMPLE) in pyopengl

代码:

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

def draw():
    pass

def main():
    glutInit()
    glEnable(GL_MULTISAMPLE)
    glutCreateWindow('Demo')
    glutDisplayFunc(draw)
    glutMainLoop()

if __name__ == '__main__':
    main()

错误:

Traceback (most recent call last):
  File ".\test.py", line 16, in <module>
    main()
  File ".\test.py", line 10, in main
    glEnable(GL_MULTISAMPLE)
  File "D:\Program\Anaconda\lib\site-packages\OpenGL\platform\baseplatform.py", line 415, in __call__
    return self( *args, **named )
  File "D:\Program\Anaconda\lib\site-packages\OpenGL\error.py", line 230, in glCheckError
    raise self._errorClass(
OpenGL.error.GLError: GLError(
        err = 1282,
        description = b'\xce\xde\xd0\xa7\xb2\xd9\xd7\xf7',
        baseOperation = glEnable,
        cArguments = (GL_MULTISAMPLE,)
)

错误描述为“无效操作”。

我正在研究 OpenGL,我想尝试抗锯齿。我不知道为什么这不起作用。我应该如何解决这个问题?如何发现是否有环境问题?或者我犯了一些低级错误?

仅当存在有效的 OpenGL 上下文时调用 OpenGL 命令才有效。使用过剩时,上下文由 glutCreateWindow 命令创建。之前调用的所有方法都会抛出错误,因为上下文无效。

正确代码:

glutInit()
glutCreateWindow('Demo')
glEnable(GL_MULTISAMPLE)
glutDisplayFunc(draw)
glutMainLoop()