@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进行实例化绘制所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)