如果我理解正确,Apple的OpenGL ES 2.0实现使用OpenGL ES 3.0中的一些方法,例如
glBindVertexArrayAPPLE
或
glBindVertexArrayOES
而不是
glBindVertexArray
似乎使用MonoTouch提供的OpenTK编译不包括这些方法中的任何一种,尽管它们存在OpenTK绑定,例如参见http://www.opentk.com/files/doc/_g_l_core_8cs_source.html的第229行。
我有什么办法可以在MonoTouch中使用这些功能吗?也许某种方式通过P / Invoke调用它们?
答案 0 :(得分:3)
为了清楚明了,自2012年初开始,MonoTouch附带了OpenTK-1.0.dll
(无需安装任何其他内容),请致电:{/ p>支持glBindVertexArrayOES
GL.Oes.BindVertexArray([u]int);
用户代码中不需要额外的p / invoke。至于glBindVertexArrayAPPLE
,逻辑可用作:
GL.Apple.BindVertexArray([u]int);
它是不的API的一部分,因为GL_APPLE_vertex_array_object
的iOS版本中未定义glext.h
(就像它是同一文件的OSX版本一样)。请注意,GL_OES_vertex_array_object
的iOS和OSX版本都定义了glext.h
,这就是 Oes API可用的原因。
快速grep(查找所有出现的内容)没有显示任何.dylib中可用的符号(因此添加它或p /调用它会在运行时失败)。
答案 1 :(得分:1)
就是这样:
[DllImport(Constants.OpenGLESLibrary, EntryPoint="glGenVertexArraysOES")]
public extern static void GenVertexArrays(int n, out int id);
[DllImport(Constants.OpenGLESLibrary, EntryPoint="glBindVertexArrayOES")]
public extern static void BindVertexArray(int id);
还有更多这样的功能。 @Xamarin,也许他们可以被列入下一个MonoTouch版本?
答案 2 :(得分:1)
如果你引用OpenTK-1.0而不是OpenTK,你会在那里找到这个API。