标签: pyglet

在Python/OpenGL中渲染数学符号?

如何使用OpenGL在Python中呈现数学符号/表达式?

我实际上使用pyglet,但它使用OpenGL.

这样的事情是这个:

二次公式

我不能存储静态图像,因为我也生成表达式.

python opengl math rendering pyglet

5
推荐指数
1
解决办法
2015
查看次数

pyglet中的像素绘制(python)

好.我厌倦了谷歌搜索和阅读大量文档没有结果.

我的目标很简单:让pyglet逐像素地绘制图像.

我一直在寻找没有结果的时间.任何人都可以给出一个简短程序的例子,该程序在显示中绘制指定逐个像素的颜色吗?例如:绘制从黑色到白色的渐变.

python graphics drawing pyglet pixel

5
推荐指数
1
解决办法
2702
查看次数

在opengl中混合2d和3d(使用pyglet)

我试图在pyglet中混合使用opengl中的2d和3d,即绘制一个3d场景,然后切换到正交投影并在顶部绘制内容.我绘制3d东西,将投影矩阵推到堆栈,做一个glOrtho投影矩阵,绘制2d的东西,然后从堆栈中弹出前一个矩阵.3d的东西很好,但由于某种原因,2d部分根本没有绘制,即使是单独的.这是代码:

class Window(pyglet.window.Window):

    # resolution
    width, height = 1024, 786

    def __init__(self, width, height):

        # initialise window
        super(Window, self).__init__(width, height)

        # set title
        self.set_caption("OpenGL Doss")

        # call update() at 30fps
        pyglet.clock.schedule_interval(self.update, 1 / 30.0)

        glEnable(GL_TEXTURE_2D)         # enable textures
        glShadeModel(GL_SMOOTH)         # smooth shading of polygons
        glClearColor(0.0, 0.0, 0.0, 0.0)

        glClearDepth(1.0)

        glDepthFunc(GL_LEQUAL)           
        glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST)   # make stuff look nice

        self.world = World()            # initialise world

        self.label = pyglet.text.Label('Hello, world',
                          font_name='Times New Roman',
                          font_size=20,
                          width=10, height=10)

    def on_resize(self, width, height):
        print 'on resize' …
Run Code Online (Sandbox Code Playgroud)

python opengl pyglet

5
推荐指数
1
解决办法
3955
查看次数

在Python中用Pyglet和Tkinter播放音乐

我想创建一个带有播放和停止按钮的简单gui来在python中播放mp3文件.我使用Tkinter创建了一个非常简单的gui,它包含2个按钮(停止和播放).

我创建了一个执行以下操作的函数:

def playsound () :
    sound = pyglet.media.load('music.mp3')
    sound.play()
    pyglet.app.run()
Run Code Online (Sandbox Code Playgroud)

我将该功能添加为按钮播放的命令.我还做了一个不同的功能来阻止音乐:

def stopsound ():
    pyglet.app.exit
Run Code Online (Sandbox Code Playgroud)

我将此功能添加为第二个按钮的命令.但问题是,当我点击游戏时,python和gui会冻结.我可以尝试关闭窗口,但它没有关闭,停止按钮没有响应.我知道这是因为pyglet.app.run()正在执行,直到歌曲结束,但我究竟如何阻止这个?当我点击按钮时,我希望gui停止播放音乐.关于我在哪里可以找到解决方案的任何想法?

python user-interface pyglet playback

5
推荐指数
2
解决办法
8311
查看次数

打开一个pyglet窗口而不需要聚焦

我的python应用程序启动一个创建pyglet窗口的子进程.当pyglet窗口打开时,它位于所有其他窗口的前面,并且需要键盘焦点.我希望我的pyglet窗口在后台打开,而不是焦点.这可能吗?

我正在使用的代码的简化版本:

import pyglet

pyglet.window.Window()
pyglet.app.run() 
Run Code Online (Sandbox Code Playgroud)

我正在使用Windows 7,以防万一.

python windows graphics subprocess pyglet

5
推荐指数
1
解决办法
775
查看次数

向我解释,就像我5:OpenGL 4.x渲染管道

我花了最近几个星期的时间来看看openGL.虽然我对一些较旧的NeHe示例没有问题,但从我读过的所有内容来看,OpenGL4是一个完全不同的过程.我可以访问红皮书和超级圣经,但前者仍然提供传统的opengl调用,后者使用自己的库.在理解如何将代码放在项目中时,两者都没有特别有用.例如,我目前的理解是glu和glut是遗留的,不应该用于opengl 4.

我可以非常容易地为假设的模型空间生成顶点.我很难理解模型最终会如何出现在我的屏幕上.大约95%的尝试最终都是黑屏.

提前致谢.

这是一些代码:

# primatives.py
from collections import Iterable
from functools import reduce
import operator

import numpy as np

from exc import UnimplementedMethod

class Primative(object):
    SIZE = 1  # number of pixels on a default grid

    def __init__(self, point=None, *args, **kwargs):
        self.point = point if isinstance(point, Iterable) else [0, 0, 0]
        self.point = np.array(self.point, dtype=np.float32)
        scaler = [self.SIZE/2]*len(self.point)
        self.point = (self.point * scaler).tolist()

    @property
    def active(self):
        attr = "__active__"
        if not hasattr(self, attr):
            setattr(self, attr, False)
        return getattr(self, …
Run Code Online (Sandbox Code Playgroud)

python rendering pipeline pyglet opengl-4

5
推荐指数
1
解决办法
529
查看次数

如何在课程中使用pyglet

在我见过的有关Pyglet的所有Web教程中,似乎没有一个教程使用类来包含pyglet.window.Window实例。例如,大多数教程看起来像

import pyglet

game_window = pyglet.window.Window()

@game_window.event
def on_draw():
    #dostuff

while __name__ == "__main__":
    pyglet.app.run()
Run Code Online (Sandbox Code Playgroud)

我在将这段代码重组为一个类时遇到麻烦。我打算这样做的代码在这里:

import pyglet
from pyglet.gl import *
from Board import Board

class Frontend:
    def __init__(self,xs, ys):
        self.GameInstance = Board(xs,ys)
        self.GameWindow = pyglet.window.Window(width=512, height=512,visible=False)

    @GameWindow.event
    def on_draw(self):
        self.GameWindow.clear()

f = Frontend()
Run Code Online (Sandbox Code Playgroud)

运行此代码时,出现以下错误:

Traceback (most recent call last):
  File "C:/Users/PycharmProjects/Nothing/2048/Frontend.py", line 7, in <module>
    class Frontend:
  File "C:/Users/PycharmProjects/Nothing/2048/Frontend.py", line 13, in Frontend
    @GameWindow.event
NameError: name 'GameWindow' is not defined
Run Code Online (Sandbox Code Playgroud)

当我更换@GameWindow.event@self.GameWindow.event在试图解决NameError我得到:

Traceback (most recent …
Run Code Online (Sandbox Code Playgroud)

python overriding class pyglet

5
推荐指数
1
解决办法
1998
查看次数

pyglet可以在新线程中运行吗?

我想在单独的线程中运行 pyglet,以便我可以实现输入的用户界面,而不会被pyglet.app.run().

import pyglet
class Window(pyglet.window.Window):
    def __init__(self):
        pyglet.window.Window.__init__(self, visible=True)
        self.push_handlers(on_draw=self.on_draw)
        self.im = pyglet.resource.image('image.jpg')
        pyglet.app.run()

    def on_draw(self):
        self.clear()

import threading
class Thread(threading.Thread):
    def run(self):
        w = Window()
Run Code Online (Sandbox Code Playgroud)

跑步

Window()
Run Code Online (Sandbox Code Playgroud)

工作正常。然而,运行

t = Thread()
t.start()
Run Code Online (Sandbox Code Playgroud)

结果为Segmentation fault (core dumped),这是由对 的调用引起的pyglet.resource.image()。省略该调用可以消除该问题。

具体来说,是什么导致了这个问题,我该如何纠正它?更一般地说,使用 pyglet 渲染窗口同时允许其他程序执行的推荐方法是什么?有一个更好的方法吗?

python multithreading pyglet python-2.7

5
推荐指数
0
解决办法
2275
查看次数

在应用程序中一起使用pyglet,twisted,pygtk

我正在制作一个应用程序,让您可以在不同的系统上同步播放音乐.对于该项目,我决定使用twisted,PyGtk2,Pyglet.我对如何运行主循环感到困惑.我应该在一个单独的线程中运行pyglet的循环,还是应该实现一个集成twisted,pygtk2,pyglet的新反应器.如果我尝试将三个环路集成在一起,性能是否会受损?

networking asynchronous pygtk pyglet twisted

5
推荐指数
0
解决办法
354
查看次数

pyglet - 用alpha加载/ blitting图像

我正在尝试使用pyglet创建一个简单的应用程序.到目前为止,我的主要问题是我似乎无法使用alpha对图像进行blit - 所有透明像素都会转换为黑色像素.我不确定问题是关于加载图像还是blitting.以下是我如何渲染图像的基本概述:

import pyglet
import pyglet.clock

window = pyglet.window.Window()

window.config.alpha_size = 8

#fancy text
text = pyglet.resource.image("text.png")

#background image
bg = pyglet.resource.image("bg.png")

bg.blit(0, 0)
text.blit(100, 100)

pyglet.app.run()
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.提前致谢.

python pyglet python-3.x

5
推荐指数
1
解决办法
1689
查看次数