我试图用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()
我没有得到任何错误,除了绿色屏幕没有画线。
这是代码结果的图像,它显示没有错误,但行没有显示:
1条答案
按热度按时间w9apscun1#
因为没有设置Orthographic projection,所以不会渲染这条线。如果没有设置正投影,则必须指定归一化设备空间中的坐标。NDC是一个唯一的立方体,左、下、近为(-1,-1,-1),右、上、远为(1,1,1)。
通过
glOrtho
指定一个正交GL_PROJECTION
矩阵(请参见glMatrixMode
),该矩阵将窗口坐标Map到NDC: