预期 LP_c_float 实例而不是列表

Posted

技术标签:

【中文标题】预期 LP_c_float 实例而不是列表【英文标题】:expected LP_c_float instance instead of list 【发布时间】:2019-05-03 10:33:07 【问题描述】:

我需要在函数中放一个数组

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: must be real number, not list

【问题讨论】:

【参考方案1】:

基于[MS.Docs]: glMaterialfv function(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))

其他参考:[searchcode]: pyglet - /experimental/buffer/torus.py.

【讨论】:

以上是关于预期 LP_c_float 实例而不是列表的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate Query.list 返回实际的 Object 实例而不是预期的类型

为啥 Retrofit & Gson 返回 LinkedTreeMap 列表而不是我预期的类型?

findById 返回文档列表而不是单个结果

带有导航器的列表视图推送到不同的屏幕而不是单个屏幕

FluentAssertions 比较列表的内容而不是列表本身

如何在c#中创建一个列表框而不是按钮点击上的重复项目?