ожидаемый экземпляр LP_c_float вместо списка - PullRequest
1 голос
/ 03 мая 2019

Мне нужно поместить массив в функцию

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: должно быть действительным числом, а не списком

1 Ответ

2 голосов
/ 03 мая 2019

На основе [MS.Docs]: функция glMaterialfv (которая pyglet переносится через [Python 3.Docs]: ctypes - библиотека сторонних функций для Python ), вы должны использовать:

pgl.glMaterialfv(pgl.GL_FRONT_AND_BACK, pgl.GL_DIFFUSE, (pgl.GLfloat * len(material_diffuse))(*material_diffuse))

Другая ссылка: [код поиска]: pyglet - /experimental/buffer/torus.py.

...