编程语言
首页 > 编程语言> > Python:pyglet学习(1):想弄点3D,还发现了pyglet

Python:pyglet学习(1):想弄点3D,还发现了pyglet

作者:互联网

某一天,我突然喜欢上了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 *

 

这就是本篇文章的内容

后面的出了会写在最下面的。

标签:Python,will,window,pyglet,context,config,display,3D
来源: https://www.cnblogs.com/joceo/p/15924834.html