带有 opengl 的 Tkinter 框架
Tkinter frame with opengl
我正在尝试使用 tkinter 框架用 opengl 绘制一个正方形,但该正方形没有渲染。
这是我的代码:
import tkinter as tk
from opengl.gl import *
from pyopengltk import OpenGLFrame
class frame(OpenGLFrame):
def initgl(self):
glViewport(0.0,self.width,self.height)
glClearColor(0.0,1.0,0.0,0.0)
def redraw(self):
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER)
glLoadIdentity()
glBegin(GL_LINES)
glColor3f(1.0,0.0,3.0)
glVertex2f(200,100)
glVertex2f(100,100)
glEnd()
gl_Flush()
if __name__=='__main__':
root = tk.Tk()
app = frame(root,width=500,height=500)
app.pack(fill=tk.BOTH, expand=tk.YES)
app.mainloop()
我没有收到任何错误,但没有画任何线条的绿屏。
这是代码结果的图像,它没有显示错误,但没有显示行:
该行未呈现,因为您没有设置 Orthographic projection。如果不设置正交投影,则必须在规范化设备 space 中指定坐标。 NDC是一个独特的立方体,左、下、近为(-1, -1, -1),右、上、远为(1, 1, 1)。
指定正交 GL_PROJECTION
矩阵(参见 glMatrixMode
) by glOrtho
,将 window 坐标映射到 NDC:
class frame(OpenGLFrame):
def initgl(self):
glViewport(0, 0, self.width, self.height)
glClearColor(0.0,1.0,0.0,0.0)
# setup projection matrix
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
glOrtho(0, self.width, self.height, 0, -1, 1)
# setup identity model view matrix
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
def redraw(self):
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER)
glLoadIdentity()
glBegin(GL_LINES)
glColor3f(1.0,0.0,3.0)
glVertex2f(200,100)
glVertex2f(100,100)
glEnd()
gl_Flush()
我正在尝试使用 tkinter 框架用 opengl 绘制一个正方形,但该正方形没有渲染。
这是我的代码:
import tkinter as tk
from opengl.gl import *
from pyopengltk import OpenGLFrame
class frame(OpenGLFrame):
def initgl(self):
glViewport(0.0,self.width,self.height)
glClearColor(0.0,1.0,0.0,0.0)
def redraw(self):
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER)
glLoadIdentity()
glBegin(GL_LINES)
glColor3f(1.0,0.0,3.0)
glVertex2f(200,100)
glVertex2f(100,100)
glEnd()
gl_Flush()
if __name__=='__main__':
root = tk.Tk()
app = frame(root,width=500,height=500)
app.pack(fill=tk.BOTH, expand=tk.YES)
app.mainloop()
我没有收到任何错误,但没有画任何线条的绿屏。
这是代码结果的图像,它没有显示错误,但没有显示行:
该行未呈现,因为您没有设置 Orthographic projection。如果不设置正交投影,则必须在规范化设备 space 中指定坐标。 NDC是一个独特的立方体,左、下、近为(-1, -1, -1),右、上、远为(1, 1, 1)。
指定正交 GL_PROJECTION
矩阵(参见 glMatrixMode
) by glOrtho
,将 window 坐标映射到 NDC:
class frame(OpenGLFrame):
def initgl(self):
glViewport(0, 0, self.width, self.height)
glClearColor(0.0,1.0,0.0,0.0)
# setup projection matrix
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
glOrtho(0, self.width, self.height, 0, -1, 1)
# setup identity model view matrix
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
def redraw(self):
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER)
glLoadIdentity()
glBegin(GL_LINES)
glColor3f(1.0,0.0,3.0)
glVertex2f(200,100)
glVertex2f(100,100)
glEnd()
gl_Flush()