我想知道是否(以及如何)可以在 python 中创建空的 c 类型数组。如果我想用零初始化一个数组,以下代码可以正常工作:
from ctypes import *
data = [0 for i in xrange(10)]
a = ((c_float *10))(*data)
但是,如果数据是None
值列表,我会收到一条错误消息:
data = [None for i in xrange(10)]
a = ((c_float *10))(*data)
TypeError: float expected instead of NoneType instance
有没有办法用 NONE 或 NULL 初始化和排列?
编辑 1: 我想要一个带有 None / Null 的数组的原因是我想将此数组上传到 GPU。如果我用零初始化我的数组,那么将呈现零。但是,如果我将其初始化为 NULL(如 c 中所定义),则不会呈现任何内容。
编辑2:
使用的原因c_float
是我需要将我的数据转换c_float
为它才能与opengl兼容。
编辑 3:
如果data
由零组成,那么以下代码将在位置 0 / 0 处为我呈现一堆点。我希望将NULL
值发送到 GPU 不会导致任何点被呈现。
glBindBuffer(GL_ARRAY_BUFFER, vbo)
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(data), data)
glVertexPointer(n_COORDINATES_PER_VERTEX, GL_FLOAT, 0, 0)
glDrawArrays(GL_LINE_STRIP, 0, len(data))
编辑 4:
您可能想NULL
在 python 中使用的另一个用例:根据opengl 网站,以下是如何在 GPU 上分配内存:
glBufferData(GL_ARRAY_BUFFER, SizeInBytes, NULL, GL_STATIC_DRAW)
如果我在我的 python 代码中执行此操作,我会收到以下错误:NameError: global name 'NULL' is not defined
但必须有办法在 python 中做到这一点,对吧?