xamarin.ios - 通过 MonoTouch/OpenTK 调用 Apple 特定的 OpenGL 命令

标签 xamarin.ios opengl-es-2.0 opentk

如果我理解正确的话,例如,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_objectglext.h 的 iOS 和 OSX 版本中定义,这就是 Oes API 可用的原因。

快速 grep(查找所有出现的情况)没有显示任何 .dylib 中可用的符号(因此添加它或 p/调用它会在运行时失败)。

关于xamarin.ios - 通过 MonoTouch/OpenTK 调用 Apple 特定的 OpenGL 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14142691/

相关文章:

c# - MonoTouch.Dialog 搜索栏返回 View 时丢失搜索查询

c# - Toast 通知 Xamarin iOS

ios - 是否可以在 OpenGL ES 2.0/iOS 上渲染到 8 位纹理帧缓冲区?

android - OpenGL ES 2 投影切换前景和背景

c# - GL 项目无法正常工作

c# - 任何 OpenTK.Graphics.OpenGL4.GL 方法中的 System.AccessViolationException

ios - 在不创建新的 UICollectionView 的情况下更新 UICollectionViewFlowLayout?

c# - NSInvalidArgumentException 原因 - [xxxx 背景 View :willChangeToGraphicsQuality]

c - OpenGL ES 2.0 着色器创建失败

c# - 从参数调用方法(使用任何参数)