某一天,我突然喜欢上了3D,在一些scratch教程中见过一些3D引擎,找了一个简单的,结果z轴太大了,于是网上一搜,就发现了pyglet
先看看官网:
Creating a window If the Window constructor is called with no arguments, defaults will be assumed for all parameters: window = pyglet.window.Window() The default parameters used are: The window will have a size of 640x480, and not be resizable. A default context will be created using template config described in OpenGL configuration options. The window caption will be the name of the executing Python script (i.e., sys.argv[0]). Windows are visible as soon as they are created, unless you give the visible=False argument to the constructor. The following example shows how to create and display a window in two steps: window = pyglet.window.Window(visible=False) # ... perform some additional initialisation window.set_visible() Context configuration The context of a window cannot be changed once created. There are several ways to control the context that is created: Supply an already-created Context using the context argument: context = config.create_context(share) window = pyglet.window.Window(context=context) Supply a complete Config obtained from a Screen using the config argument. The context will be created from this config and will share object space with the most recently created existing context: config = screen.get_best_config(template) window = pyglet.window.Window(config=config) Supply a template Config using the config argument. The context will use the best config obtained from the default screen of the default display: config = gl.Config(double_buffer=True) window = pyglet.window.Window(config=config) Specify a Screen using the screen argument. The context will use a config created from default template configuration and this screen: screen = display.get_screens()[screen_number] window = pyglet.window.Window(screen=screen) Specify a Display using the display argument. The default screen on this display will be used to obtain a context using the default template configuration: display = platform.get_display(display_name) window = pyglet.window.Window(display=display) If a template Config is given, a Screen or Display may also be specified; however any other combination of parameters overconstrains the configuration and some parameters will be ignored.
总结了就是
import pyglet as p p.window.Window(600,600) p.app.run()
效果:
然后画个正方形
import pyglet as p from pyglet.gl import * win=p.window.Window(600,600) @win.event def on_draw(): #( win.clear() glMatrixMode(GL_PROJECTION) glLoadIdentity() gluPerspective(90, 1, 0.1, 100) glMatrixMode(GL_MODELVIEW) glLoadIdentity() #) pos=[0,0,-20] glTranslatef(*pos) glBegin(GL_POLYGON) glVertex3f(-5,-5,0) glVertex3f(5,-5,0) glVertex3f(5,5,0) glVertex3f(-5,5,0) glEnd() glFlush() p.app.run()
#( 和 #)中间的是固定的,不能改
glTranslatef(*pos):摄像头位置
glBegin(GL_POLYGON):开始绘制多边形
glVertex3f(-5,-5,0) glVertex3f(5,-5,0) glVertex3f(5,5,0) glVertex3f(-5,5,0):给出所有坐标点,绘制图形
glEnd():结束绘制当前图形
glFlush():刷新界面 都包含在pyglet.gl里,可使用
from pyglet.gl import *
这就是本篇文章的内容
后面的出了会写在最下面的。