一般に、C# コードvoid*
に変換されます。IntPtr
もう少し情報を編集してくださいIntPtr
。.NET/C# では、不透明なハンドルのように動作することがよくあります。それを直接逆参照することはできず、そこから「サイズ」情報(たとえば、指している配列のサイズ)を取得することはできません。また、指しているデータ型を伝えようとはしません。まったくポインター。C/C++ コードを C# に変換しているときに が表示された場合は、正確に何を扱っているかがよくわかるvoid*
まで、C# コードを使用して記述する必要があります。IntPtr
pinvoke.net サイトにはglTexImage2D
、画像データの保存場所に応じて の 2 つのエントリがあります。画像データがマネージドbyte[]
イン .NET/C# に格納されている場合は、.NET を渡すバージョンを呼び出しますbyte[]
。IntPtr
画像データがアンマネージ メモリに格納されていて、C# コード内にデータへのしかない場合は、を渡すバージョンを呼び出しますIntPtr
。
pinvoke.net opengl32 の例:
[DllImport(LIBRARY_OPENGL)] protected static extern void glTexImage2D (
uint target,
int level,
int internalformat,
int width,
int height,
int border,
uint format,
uint type,
byte[] pixels);
[DllImport(LIBRARY_OPENGL)] protected static extern void glTexImage2D (
uint target,
int level,
int internalformat,
int width,
int height,
int border,
uint format,
uint type,
IntPtr pixels);