我刚刚在刚起步的应用程序的GL界面中发现了一个小问题。在桌面GL上,例如glShaderSource()会使用GLchar *,但是在移动GLES接口上,它们会使用纯字符*。
现在,这确实是一件非常琐碎的事情。由于GLchar无论如何都是char的typedef,因此可以只在桌面GL上使用char *,并且在任何地方都可以。
但是,看到此问题使我担心在GL vs GLES领域遇到其他兼容性问题。当然,我知道GLES 2.0本质上是精简的OpenGL 2.0,并且我将不得不遭受诸如固定功能管道之类的损失。但是那会变得更糟吗?我希望GLES 2.0留给我的接口至少可以与台式机GL对应的接口相同。但是确实如此吗?我当然希望如此。
最佳答案
但是确实如此吗?
没有。
例如,glTexSubImage2D在ES 2.0中不能像在桌面GL中那样工作。内部格式和像素格式参数采用完全不同的值,这些值在大多数情况下对于桌面GL不合法。
您不应期望ES 2.0代码在桌面GL上运行而不会发生变化。