在iOS上使用OpenGL ES 2.0进行实例化绘制

在iOS上使用OpenGL ES 2.0进行实例化绘制,第1张

概述简而言之: 任何人都可以确认是否可以在启用了GL_EXT_draw_instanced的iOS上使用OpenGL ES 2.0的顶点着色器中使用内置变量gl_InstanceID(或gl_InstanceIDEXT)? 更长: 我想使用glDrawArraysInstanced和gl_InstanceID绘制对象的多个实例,我希望我的应用程序在多个平台上运行,包括iOS. 规范明确指出这些功能需要 简而言之:

@H_419_8@

任何人都可以确认是否可以在启用了GL_EXT_draw_instanced的iOS上使用OpenGL ES 2.0的顶点着色器中使用内置变量gl_InstanceID(或gl_InstanceIDEXT)?@H_419_8@

更长:@H_419_8@

我想使用glDrawArraysInstanced和gl_InstanceID绘制对象的多个实例,我希望我的应用程序在多个平台上运行,包括iOS.@H_419_8@

规范明确指出这些功能需要ES 3.0.根据iOS Device Compatibility Reference,ES 3.0仅适用于少数设备(基于A7 GPU;因此iPhone 5s,但不适用于iPhone 5或更早版本).@H_419_8@

所以我的第一个假设是我需要避免在较旧的iOS设备上使用实例化绘图.@H_419_8@

但是,在兼容性参考文档further down中,它表示所有SGX SerIEs 5处理器(包括iPhone 5和4s)都支持EXT_draw_instanced扩展.@H_419_8@

这让我觉得我确实可以在较旧的iOS设备上使用实例绘图,通过查找并使用适当的扩展功能(EXT或ARB)为glDrawArraysInstanced.@H_419_8@

我目前只是在windows上使用SDL和GLEW运行一些测试代码,所以我还没有在iOS上测试任何东西.@H_419_8@

但是,在我目前的设置中,我在顶点着色器中使用gl_InstanceID内置变量时遇到了麻烦.我收到以下错误消息:@H_419_8@

@H_419_8@

‘gl_InstanceID’ : variable is not available in current GLSL version@H_419_8@

在GLSL中启用“draw_instanced”扩展名无效:@H_419_8@

@H_419_8@

#extension GL_ARB_draw_instanced : enable#extension GL_EXT_draw_instanced : enable

当我明确声明我需要ES 3.0(GLSL 300 ES)时,错误消失了:@H_419_8@

@H_419_8@

#version 300 es

虽然这似乎在我的windows桌面机器上在ES 2.0上下文中运行良好,但我怀疑这适用于iPhone 5.@H_419_8@

那么,我是否应该放弃在旧的iOS设备上使用实例绘图的想法?@H_419_8@解决方法 从 here开始:

@H_419_8@

@H_419_8@

Instanced drawing is available in the core OpenGL ES 3.0 API and in
OpenGL ES 2.0 through the EXT_draw_instanced and EXT_instanced_arrays
extensions.@H_419_8@

You can see它可用于所有GPU,PowerVR SGX,Apple A7,A8.@H_419_8@

(看起来@ Shammi没有回来……如果他们这样做,你可以改变接受的答案:)@H_419_8@ 总结

以上是内存溢出为你收集整理的在iOS上使用OpenGL ES 2.0进行实例化绘制全部内容,希望文章能够帮你解决在iOS上使用OpenGL ES 2.0进行实例化绘制所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1042911.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存