Python 如何绘制单个三维点?

Python 如何绘制单个三维点?,python,python-3.x,opengl,pyopengl,opengl-compat,Python,Python 3.x,Opengl,Pyopengl,Opengl Compat,我正在使用Python3和PyOpenGL,我需要在空间中绘制单点。我知道点没有体积,但我不知道是否有一种简单的方法可以在特定坐标系下绘制点/球体。 编辑:我在pygame和tkinter gui中使用opengl 我尝试了以下代码: glEnable(GL_点_平滑) glBegin(GLU点) glColor3d(1,1,1) glPointSize(200) glVertex3d(1,1,1) glEnd()#这会抛出一个错误 错误: Exception in Tkinter callb

我正在使用Python3和PyOpenGL,我需要在空间中绘制单点。我知道点没有体积,但我不知道是否有一种简单的方法可以在特定坐标系下绘制点/球体。 编辑:我在pygame和tkinter gui中使用opengl

我尝试了以下代码:

glEnable(GL_点_平滑)
glBegin(GLU点)
glColor3d(1,1,1)
glPointSize(200)
glVertex3d(1,1,1)
glEnd()#这会抛出一个错误
错误:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Program Files (x86)\Python37-32\lib\tkinter\__init__.py", line 1702, in __call__
    return self.func(*args)
  File "C:/Users/reas/Desktop/Programación/Dibujo/Dibujo.py", line 65, in vista_alzado
    glEnd()
  File "C:\Program Files (x86)\Python37-32\lib\site-packages\OpenGL\latebind.py", line 61, in __call__
    return self.wrapperFunction( self.baseFunction, *args, **named )
  File "C:\Program Files (x86)\Python37-32\lib\site-packages\OpenGL\GL\exceptional.py", line 45, in glEnd
    return baseFunction( )
  File "C:\Program Files (x86)\Python37-32\lib\site-packages\OpenGL\platform\baseplatform.py", line 409, in __call__
    return self( *args, **named )
  File "C:\Program Files (x86)\Python37-32\lib\site-packages\OpenGL\error.py", line 232, in glCheckError
    baseOperation = baseOperation,
OpenGL.error.GLError: GLError(
    err = 1282,
    description = b'operaci\xf3n no v\xe1lida',
    baseOperation = glEnd,
    cArguments = ()
)

导致此错误的原因是在
glBegin
/
glEnd
序列中调用了。这是不允许的。
您必须在
glBegin
之前调用
glPointSize
,例如:

glEnable(GL_点_平滑)
glPointSize(5)
glBegin(GLU点)
glColor3d(1,1,1)
glVertex3d(0,0,0)
格伦德()
一旦开始绘制基本体,它只允许指定顶点坐标()和更改属性(例如…),直到绘制结束(
glEnd
)。
所有其他指令将被忽略,并导致
GL\u无效\u操作
错误(错误代码1282)


注意,如果模型视图矩阵和投影矩阵是单位矩阵,则坐标(1,1,1)是视口的右上(远)点。
坐标(0,0,0)将位于视图(体积)的中心

如果使用透视投影

glu透视图(40,显示[0]/display[1],0.1,50)
然后该点的z坐标必须小于
-near
(示例中的近平面为0.1)且大于
-far
(远平面为50),否则该点将被视锥体的近平面或远平面剪裁。 请注意视图空间z轴指向视口之外。e、 g

glVertex3d(0,0,-1)

另请参见

“这会引发错误”什么错误?编辑@HolyblackCathank you!现在它没有抛出错误,但我看不到任何不同,我认为绘图调用还有另一个问题,我正在检查它,这是该点的体积?它是一个球体吗?我什么都看不到我什么都看不到,我用glRotatefNo旋转“摄影机”我没有,我有这行:glupperspective(40,display[0]/display[1],0.1,50)哦,我很惭愧,问题是我在绘图函数之前调用了pygame.display.flip()函数