如果我理解正确的话,例如,Apple 的 OpenGL ES 2.0 实现使用了 OpenGL ES 3.0 中的一些方法
glBindVertexArrayAPPLE
或
glBindVertexArrayOES
而不是
glBindVertexArray
似乎与 MonoTouch 一起提供的 OpenTK 编译不包含这些方法中的任何一个,尽管它们存在 OpenTK 绑定(bind),例如参见 http://www.opentk.com/files/doc/_g_l_core_8cs_source.html 的第 229 行.
有什么方法可以在 MonoTouch 中使用这些功能吗?也许有某种方法可以通过 P/Invoke 调用它们?
最佳答案
为了明确起见,自 2012 年初以来,OpenTK-1.0.dll
随 MonoTouch 一起提供(无需安装其他任何东西),通过调用以下方式支持 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
在 glext.h
的 iOS 和 OSX 版本中定义,这就是 Oes API 可用的原因。
快速 grep(查找所有出现的情况)没有显示任何 .dylib 中可用的符号(因此添加它或 p/调用它会在运行时失败)。
关于xamarin.ios - 通过 MonoTouch/OpenTK 调用 Apple 特定的 OpenGL 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14142691/