私はサードパーティのDLLを使っていくつかの生画像データを読み込んでいますが、この生画像データをOpenGLのテクスチャとして使用したいと思います。しかし、c関数はvoid *を返し、何とかこれを変換してglTexImage2Dの "pixels"パラメータとして機能させる必要があります。今、私のコードは次のようなものです:gltexImage2Dへの入力としてctypes.c_void_pを使用していますか?
data = c_void_p(vdll.vlImageGetData())
glTexImage2D(GL_TEXTURE_2D, 1, GL_RGB8, 1024, 1024, 0, GL_RGB, GL_UNSIGNED_BYTE, data)
しかし、私は、データが 'ポインタに変換できません'という不満を受けます。誰もこれを動作させる方法を知っていますか?
編集:それを考え出してください。基本的に私がやっていることはこれです:
data = create_string_buffer(BUFFER_SIZE)
data = dll.vlImageGetData()
glTexImage2D(GL_TEXTURE_2D, 1, GL_RGB8, 1024, 1024, 0, GL_RGB, GL_UNSIGNED_BYTE, data)
これは機能しません。なぜなら、pyopenGLは、ピクセルparamが生の文字列であることを期待しているからです。私はc_char_pを使用することはできません。なぜなら、それはヌルで終了する文字列を必要とするからです。そのvoidポインタを生のpython文字列に変換する方法が必要です。 – aeflash
http://osdir.com/ml/python.ctypes/2004-12/msg00002.htmlを見たことがありますか?はい、それが役に立たなかった場合は、ローカルで実行できる小さなスタンドアローンのスケッチを提供する必要があります。 –