OpenGL ES 2.0通过共享c+在ios和android上进行抗锯齿或平滑处理+;代码
我对OpenGL和ES2.0相当陌生。我已经分享了C++ OpenGL ES2代码,我用它来绘制iOS和Android(用ndk CMake)…它基本上是有效的,但现在我需要抗锯齿,这有点让人困惑,我看到的解决方案依赖于平台,android端更让人困惑,而且有局限性。我一直在寻找解决方案,但需要更多的澄清 什么应该对两者都起作用: 显然,描述说 Renderbuffer对象本身也支持多采样(MSAA) 但ES2.0似乎并不支持这一点。iOS有自己的方法OpenGL ES 2.0通过共享c+在ios和android上进行抗锯齿或平滑处理+;代码,android,c++,ios,opengl-es-2.0,antialiasing,Android,C++,Ios,Opengl Es 2.0,Antialiasing,我对OpenGL和ES2.0相当陌生。我已经分享了C++ OpenGL ES2代码,我用它来绘制iOS和Android(用ndk CMake)…它基本上是有效的,但现在我需要抗锯齿,这有点让人困惑,我看到的解决方案依赖于平台,android端更让人困惑,而且有局限性。我一直在寻找解决方案,但需要更多的澄清 什么应该对两者都起作用: 显然,描述说 Renderbuffer对象本身也支持多采样(MSAA) 但ES2.0似乎并不支持这一点。iOS有自己的方法glrenderbufferstoragem
glrenderbufferstoragemultisampleaple
,在es 2.0上支持它,但android没有。当ios有自己的方法(再一次)glResolveMultisampleFramebufferAPPLE
时,android也不能Blit帧缓冲区
如果这是特定于平台的操作:iOS可以执行setDrawableMultisample:GLKViewDrawableMultisample4X
,这似乎是可行的。但是Android有局限性,有代码> EGLConfigChooser <代码> >代码>选择eCufg,但是我读过并不是所有的Android设备都支持反走样(我也不能在仿真器上测试),所以我必须在本地C++代码中再次执行。
其他:我一直在阅读,有一些方法,比如在圆形中多次绘制所有内容(精度更高),或者将整个视图放大到2倍,然后绘制,然后缩小比例以获得更平滑的线条。。。另一方面,我不确定它是否有效,但绘制到某种纹理或图像,以某种方式进行抗锯齿或支持抗锯齿(需要更好地理解这一点)
我现在需要的:我的要求是只使用
glDrawArrays
方法绘制带有颜色的顶点(我通过这个方法完成我的工作)。绘制的所有对象都应该平滑或抗锯齿。我应该如何处理这个问题?我需要更好的参考资料或教程,在那里我可以正确地阅读任何应该同时适用于这两种方法的方法。我不介意阅读和学习,但我有点被这么多的选择所困扰,而与它们没有什么关联。编辑:我在2D中绘制(z=0始终),没有深度问题。OpenGL ES 2.0面向低端平台,因此不需要抗锯齿。但是,由于有很多硬件超过了ES 2.0的要求,因此通常会实现扩展
假设您需要在不支持它的平台上执行此操作,尽管这是一个不公平的要求(如果流浪汉希望视觉完美,他们应该购买effing硬件),根据渲染场景和开发预算,可能会有两种方法起作用:
如果您实现上述任何一项,我将对您的结果和场景的更多细节非常感兴趣。所以您的问题是无法在模拟器上执行抗锯齿。你们在设备上试过了吗?尤其是中端设备的GPU比几年前要好,这对你的应用程序的目标市场来说仍然是个问题吗?我已经在一台设备上试用过了,效果不错。但问题是为了避免“在某些设备上无法运行”的问题。所以我现在正在寻找替代者。但要澄清的是,如果设备运行opengl es 2.0,则不能保证它也会运行多重采样,对吗?抗锯齿将始终受到性能影响(请参阅3D PC游戏,其中AA是可选的,以提高帧速率),因此一些设备根本无法支持它,或者基于应用程序(游戏与绘图程序)的支持较差。开发一个应用程序来发布意味着在哪些设备不受支持的问题上做出权衡。再次在您的普通客户设备上进行测试,看看AA开/关是否有意义的区别。