Python 基于opengl的Tkinter框架

Python 基于opengl的Tkinter框架,python,opengl,tkinter,pyopengl,opengl-compat,Python,Opengl,Tkinter,Pyopengl,Opengl Compat,请允许我尝试用opengl使用tkinter框架绘制一个正方形,但该正方形没有渲染。 这是我的密码。 我是新来的,请告诉我,我不知道如何像其他人一样制作区块码 将tkinter作为tk导入 从opengl.gl导入* 从pyopengltk导入OpenGLFrame 类框架(OpenGLFrame): def initgl(自身): glViewport(0.0,自宽,自高) glClearColor(0.0,1.0,0.0,0.0) def重绘(自): glClear(GL_颜色_缓冲区_位|

请允许我尝试用opengl使用tkinter框架绘制一个正方形,但该正方形没有渲染。 这是我的密码。 我是新来的,请告诉我,我不知道如何像其他人一样制作区块码

将tkinter作为tk导入
从opengl.gl导入*
从pyopengltk导入OpenGLFrame
类框架(OpenGLFrame):
def initgl(自身):
glViewport(0.0,自宽,自高)
glClearColor(0.0,1.0,0.0,0.0)
def重绘(自):
glClear(GL_颜色_缓冲区_位| GL_深度_缓冲区)
glLoadIdentity()
glBegin(GLU线)
glColor3f(1.0,0.0,3.0)
glVertex2f(200100)
glVertex2f(100100)
格伦德()
gl_Flush()
如果“名称”=“\uuuuuuuu主要”:
root=tk.tk()
app=框架(根部,宽度=500,高度=500)
app.pack(fill=tk.BOTH,expand=tk.YES)
app.mainloop()
除了没有画线的绿色屏幕外,我没有任何错误

我没有得到任何错误,除了绿色屏幕没有画线。 如果你能帮我写另一个代码或者帮我更正这个,我会尽力的



该线不会渲染,因为您没有设置。如果不设置正交投影,则必须在规格化设备空间中指定坐标。NDC是一个独特的立方体,左、下、近为(-1,-1,-1),右、上、远为(1,1,1)

指定将窗口坐标映射到NDC的正交投影矩阵(请参见):

类框架(OpenGLFrame): def initgl(自身): glViewport(0,0,self.width,self.height) glClearColor(0.0,1.0,0.0,0.0) #设置投影矩阵 glMatrixMode(GL_投影) glLoadIdentity() 格洛托(0,自宽,自高,0,-1,1) #设置标识模型视图矩阵 glMatrixMode(GLU模型视图) glLoadIdentity() def重绘(自): glClear(GL_颜色_缓冲区_位| GL_深度_缓冲区) glLoadIdentity() glBegin(GLU线) glColor3f(1.0,0.0,3.0) glVertex2f(200100) glVertex2f(100100) 格伦德() gl_Flush()
该行不会渲染,因为您没有设置。如果不设置正交投影,则必须在规格化设备空间中指定坐标。NDC是一个独特的立方体,左、下、近为(-1,-1,-1),右、上、远为(1,1,1)

指定将窗口坐标映射到NDC的正交投影矩阵(请参见):

类框架(OpenGLFrame): def initgl(自身): glViewport(0,0,self.width,self.height) glClearColor(0.0,1.0,0.0,0.0) #设置投影矩阵 glMatrixMode(GL_投影) glLoadIdentity() 格洛托(0,自宽,自高,0,-1,1) #设置标识模型视图矩阵 glMatrixMode(GLU模型视图) glLoadIdentity() def重绘(自): glClear(GL_颜色_缓冲区_位| GL_深度_缓冲区) glLoadIdentity() glBegin(GLU线) glColor3f(1.0,0.0,3.0) glVertex2f(200100) glVertex2f(100100) 格伦德() gl_Flush()
有一个输入错误
glViewport
有4个参数。它必须是
glViewport(0,0,self.width,self.height)
而不是
glViewport(0.0,self.width,self.height)
有打字错误
glViewport
有4个参数。它必须是
glViewport(0,0,self.width,self.height)
而不是
glViewport(0.0,self.width,self.height)
rabbi76请您编写代码为我渲染线框立方体好吗?当我添加3d坐标时,您的代码只适用于2d,而不是show@Lord_daniel必须确保几何体位于近平面和远平面之间,否则几何体将被剪裁。在您的情况下,近距离飞机是-1,票价飞机是1(
glOrtho(…,-1,1)
)。增加这个范围。不管怎样,如果你有问题,那么。评论部分不是用来提问的。Rabbid76请你能为我编写代码来渲染线框立方体吗?当我添加3d坐标时,你的代码只适用于2d,而不是show@Lord_daniel必须确保几何体位于近平面和远平面之间,否则将剪裁几何体。在您的情况下,近距离飞机是-1,票价飞机是1(
glOrtho(…,-1,1)
)。增加这个范围。不管怎样,如果你有问题,那么。评论部分不打算提问。