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にアップロードしたいからです。配列をゼロで初期化すると、ゼロがレンダリングされます。ただし、初期化すると(cで定義されているように)NULLになり、何もレンダリングされません。
編集2:
使用する理由は、openglと互換性を持たせるためにc_float
、データをにキャストする必要があるためです。c_float
編集3:がゼロで構成されている
場合data
、次のコードは、位置0/0でポイントの束をレンダリングします。GPUにNULL
値を送信しても、ポイントがレンダリングされないことを期待していました。
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 Webサイトによると、GPUにメモリを割り当てる方法は次のとおりです。
glBufferData(GL_ARRAY_BUFFER, SizeInBytes, NULL, GL_STATIC_DRAW)
Pythonコードでこれを行うと、次のエラーが発生します。NameError: global name 'NULL' is not defined
しかし、Pythonでこれを行う方法があるはずですよね?