Данные, которые передаются в glDrawPixels
, должны быть массивом GLuint
значений, а не вложенным списком значений.
Если вы хотите определить цветовые каналы с помощью интегральных значений в диапазоне [0, 255], то вам нужно использовать тип данных GLubyte
и соответствующую константу перечислителя OpenGL GL_UNSIGNED_BYTE
вместо GL_UNSIGNED_INT
.
, например
data = [random.randint(0, 255) for _ in range (0, H*W*3)]
glDrawPixels(W, H, GL_RGB, GL_UNSIGNED_BYTE, (GLubyte * len(data))(*data))
Если вы все равно используете GLuint
соответственно GL_UNSIGNED_INT
, то интегральные цветовые каналы должны находиться в диапазоне [0, 2147483647]:
, например * * 1016
data = [random.randint(0, 2147483647) for _ in range (0, H*W*3)]
glDrawPixels(W, H, GL_RGB, GL_UNSIGNED_INT, (GLuint * len(data))(*data))