问题标签 [pyglet]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - pyglet精灵/纹理问题:从左下角拉伸
我的一个笔记本上的 pyglet 有问题。我正在开发一个相对复杂的 2D 游戏,但即使使用您可以想象的最简约的 pyglet 应用程序也会发生这种情况:
它应该显示一个像这样的球图像:
但它所画的是一个以某种方式拉伸的图像:
如果我用它替换ball.draw()
它ball_img.blit(0, 0, 0)
会按预期呈现。
笔记本是运行 Linux(英特尔集成显卡)的小型 Thinkpad X40。
这种行为是如何造成的,或者是什么原因造成的?
python-3.x - 为什么 pyGame 或 pyglet 不支持 python 3?
我一直在研究 Python 的各种游戏设计模块,例如 pyglet 和 pyGame。我注意到这两个似乎只与python 2兼容。看到python 3是最新版本,这是为什么呢?我使用 python 的经验是使用 python 3,那么有没有好的框架/模块用于 python 3 游戏开发?或者我会更好地学习 python 2 并使用 pyglet 或 pyGame?
编辑:我会在 Mac 上使用 pyGame。下载页面http://www.pygame.org/download.shtml只有 py2.6、py2.5 和 py2.4 的链接,这让我相信它不兼容 python 3。
python - 是否可以将 3D 模型导入 pyglet?
我和一个朋友正在使用 pyglet 库开发一个用 python 编写的 openGL 游戏。现在我们完成了地图绘制代码,并且已经到了需要导入一些将显示在地图上的模型的地步。Pyglet 似乎不支持它,除了一些旧的 SVN 代码,显然(我用谷歌搜索了一下,运气不太好)。有谁知道可以导入 3D 模型的好 Python 脚本/库?
python - 尝试在 pyglet 中创建批处理时出现“太多值无法解包错误”
我一直在尝试让批处理在 pyglet 中工作,但我完全被来自pyglet/graphics/__init__.py
文件的错误消息“太多的值无法解包”弄糊涂了。我的猜测是,在将几何图形添加到批处理时,我在语法上做错了。
我将代码缩减为产生错误的基本部分:
python - 如何使用 pyglet 提高批处理性能?
我有一些使用 pyglet 库创建批处理的代码。满载时,整个东西包含大约 10 000 个四边形。现在,当我运行渲染整个场景的脚本(它是一个完全静态的场景)时,我得到了 3FPS。在我用于场景渲染器的原型中,我将使用一些缓慢而草率的 Python 代码构建地图,而对于完全相同的场景,这些代码恰好也以 3FPS 运行。由于 pyglet 中的批次是使用 C++ 管理的,因此我有一种令人不安的感觉,即我遗漏了一些明显导致批次以 3FPS 绘制的东西。
这是我的场景初始化代码:
这是运行每一帧以渲染场景的代码:
python - putpixel 与 pyglet
我是 pyglet 的新手。我想在每次on_draw
迭代时将像素从黑色更改为白色。所以在 1000 次迭代之后,窗口中应该正好有 1000 个白色像素。但是,我想避免为此调用 1000 次绘制操作on_draw
。所以我想创建一个图像,在图像上做一个 RGB putpixel,然后将图像blit到屏幕上。我怎样才能做到这一点?pyglet 文档、示例和源代码对此没有太大帮助。
python - 基本的 openGL、顶点缓冲区和 pyglet
编辑:rotoglup 在我的代码中发现了问题,添加了我删除的着色器完成了解决方案。请参阅下面的答案以获取正确的代码(使用着色器)。
大家好 !
我正在尝试从本教程中学习一些现代 OpenGL 的基础知识。
我想用 python/pyglet 而不是 C++ 来做。我知道 pyglet 可以抽象出许多低级 OpenGL。在继续将它们隐藏在抽象层之后,我想了解一些基础知识。
我的问题非常简单:下面的代码只画了一个点,而不是我期望的 3 个。据我所知,我的代码与教程中的 C++ 相同,除了删除了顶点和片段着色器(通过python 中的gletools完成),这似乎对我的问题没有任何影响。
将事情简化为一个点显示了我不理解的行为(第一个坐标似乎是唯一影响任何事情的坐标),这让我回到了我的信念,即我根本无法理解关于 pyglet、OpenGL、甚至是一般的3D:p
以下是相关代码:
python - OpenGL 基础:每个对象调用一次 glDrawElements
继续我对 OpenGL 基础知识的探索(参见这个问题),我试图找出用 OpenGL 绘制场景的基本原理。
我正在尝试在每个方向上重复 n 次渲染一个简单的立方体。
我的方法似乎产生了糟糕的性能:1000 个立方体带来了低于 50fps 的性能(在 QuadroFX 1800 上,大约是 GeForce 9600GT)。
我绘制这些立方体的方法如下:
完成一次:
- 在模型空间中设置包含我的立方体顶点的顶点缓冲区和数组缓冲区
- 设置一个数组缓冲区索引立方体以绘制为 12 个三角形
为每一帧完成:
- 更新顶点着色器使用的统一值以一次移动所有立方体
为每个立方体,每个帧完成:
- 更新顶点着色器使用的统一值以将每个立方体移动到其位置
- 调用 glDrawElements 绘制定位的立方体
这是一个理智的方法吗?如果没有,如何处理这样的事情?我猜我需要尽量减少对 glUniform、glDrawElements 或两者的调用,但我不知道该怎么做。
我的小测试的完整代码:(取决于gletools和 pyglet)
我知道我的初始化代码(至少)真的很难看。我现在关心每一帧的渲染代码,稍后我将转向一些不那么疯狂的创建顶点缓冲区等。
python - 使用 Pyglet 截屏 [已修复]
在 pyglet 文档中,我发现:
以下示例显示了如何抓取应用程序窗口的屏幕截图:
pyglet.image.get_buffer_manager().get_color_buffer().save('screenshot.png')
但是,当使用它时,一切都会停止,直到我单击鼠标。是否有另一种方法可以在 Pyglet 中获取屏幕内容,或者将其强制返回事件循环?
编辑:我发现实际上有一个短暂的延迟(0.2 秒〜),但没有别的。实际上它与停止pyglet的F10键有关。>_>
我无法关闭或删除,因为有一个开放的赏金。
release - 区分鼠标按下和鼠标按住
我目前正在为 pyglet 开发一个小图形库。该模块用于制作完全由线条组成的矢量图形。
在其开发过程中,我遇到了一个问题,单击拖动(并移动一个点)也会引发一个 on_mouse_press 事件,该事件会在最后一个活动链接和您尝试拖动的点之间创建一个新链接。
我似乎想不出任何方法来解决这个问题,这会使创建点之间的链接感觉迟缓,我已经创建了 on_mouse_release 链接,以便我可以确定在链接点之前是否已拖动鼠标。
有没有其他人对我如何让它工作而不显得迟钝有任何好主意。
编辑:澄清我在 python 中使用 pyglet