You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pyglet调用Batch类绘图报ValueError: Can only assign sequence of same size求助

错误产生原因
  • 触发该报错的根本原因是顶点数据格式不符合Pyglet的Batch.add()方法要求:
    • 你为v3f类型传入的顶点数据是嵌套结构:(self.add(...), self.add(...), ...),每个add()方法返回长度为3的坐标列表,所以整体是包含4个列表的嵌套序列,总长度仅为4
    • v3f代表每个顶点用3个float类型坐标表示,4个顶点总共需要传入长度为12的一维平铺序列,序列长度不匹配触发了该报错。
解决方案

只需要将嵌套的顶点坐标列表展开为一维序列即可,最简单的方式是用*运算符解包每个add()返回的坐标列表,修改后的代码如下:

self.batch.add(4, GL_QUADS, self.top, 
               ('v3f', (*self.add(pos, [0, 1, 0]), 
                        *self.add(pos, [0, 1, 1]), 
                        *self.add(pos, [1, 1, 1]), 
                        *self.add(pos, [1, 1, 0]))), 
               tex_coords)

解包后v3f对应的序列就是12个独立的浮点数值,完全符合Pyglet的参数要求,即可正常运行。

内容的提问来源于stack exchange,提问作者FallenGalaxy_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 08:45:04