使用OpenGL的C代码:
vector<RGB> LUT; //creating a vector3 array
glTexImage3D(GL_TEXTURE_3D, 0, GL_RGB, 16, 16, 16, 0, GL_RGB,GL_FLOAT, &LUT[0]);
上面的C代码工作正常 . &LUT[0]
被接受,因为它的类型为 const GLvoid * data
使用SharpGL的C#代码:
Vector3[] vec3 = new Vector3[2]; //creating a vector3 array
gl.TexImage3D(GL_TEXTURE_3D, 0, GL_RGB, 16, 16, 16, 0, GL_RGB,GL_FLOAT, &LUT[0]);
我的问题是,在SharpGL &LUT[0]
不接受,声明它只接受IntPtr类型的消息 . 无论如何我可以解决这个问题吗?
1 回答
您可以将
float[]
打包成IntPtr
.记得在拨打
gl.TexImage3D()
后将其释放 .