python - 预期 LP_c_float 实例而不是列表
问题描述
我需要在函数中放置一个数组
material_diffuse = [1.0, 1.0, 1.0, 1.0]
pgl.glMaterialfv(pgl.GL_FRONT_AND_BACK, pgl.GL_DIFFUSE, material_diffuse)
or
material_diffuse = [1.0, 1.0, 1.0, 1.0]
pgl.glMaterialfv(pgl.GL_FRONT_AND_BACK,
pgl.GL_DIFFUSE,ctypes.c_float(material_diffuse))
在第一种情况下,我得到:预期的 LP_c_float 实例而不是列表在第二种情况下:TypeError:必须是实数,而不是列表
解决方案
基于[MS.Docs]: glMaterialfv 函数(pyglet通过[Python 3.Docs]: ctypes - A foreign function library for Python包装),您应该使用:
pgl.glMaterialfv(pgl.GL_FRONT_AND_BACK, pgl.GL_DIFFUSE, (pgl.GLfloat * len(material_diffuse))(*material_diffuse))
推荐阅读
- jenkins - Jenkins 管道通过代码配置选项
- c# - 如何在 C# 中创建属于 Domain Admins 组的 AD 用户
- c - 如何在自定义系统调用中打开现有文件并写入
- javascript - 如何将流类型转换为 js 对象?
- react-native - 使用 Apollo + React Native Query 获取新项目后,无限列表不会重新渲染
- c# - 抽象和继承有什么区别?
- assembly - 英特尔的 asm 文档中的“未定义”是什么意思?FST 对 C0、C2、C3 的影响
- excel - Groupby 的 Row_Number 查询
- leaflet - 如何在传单中添加 maidengrid 叠加层
- javascript - JSX 中的 lambda 是如何工作的?