OpenGL 4.6 新版本特性
在2017年的 SIGGRAPH 上,Khronos 突然推出了 OpenGL 4.6。相比 OpenGL 4.5,这个版本加入了一些 Vulkan 的技术,进一步完善了 OpenGL。这代表OpenGL还没终结,以后还会绽放新的活力。
这几个扩展进入了核心:
- GL_ARB_gl_spirv 和 GL_ARB_spirv_extensions 可以让 OpenGL 用上 Vulkan 的 SPIR-V。
- GL_ARB_indirect_parameters 和 GL_ARB_shader_draw_parameters 都是让GPU可以直接从显存里得到渲染参数,而不用从CPU给过去。减少了CPU开销。
- GL_ARB_pipeline_statistics_query 和 GL_ARB_transform_feedback_overflow_query 是来自于D3D的概念,可以在程序里获取流水线的统计信息,方便 profile 和 debug。
- GL_ARB_texture_filter_anisotropic 是从一个非常古老的扩展 GL_EXT_texture_filter_anisotropic 提升而来,负责各项异性的纹理过滤。原先在实现方法上有知识产权限制,多少年了一直是在 EXT 的状态。
- GL_ARB_polygon_offset_clamp 来自于有一段时间了的 GL_EXT_polygon_offset_clamp。可以帮助减少漏光的现象。
- GL_ARB_shader_atomic_counter_ops 和 GL_ARB_shader_group_vote 的概念来自于 CUDA,可以在 shader 之间做原子操作和传递信息。
- GL_KHR_no_error 可以关掉错误机制,以降低驱动开销。
同时增加了几个扩展:
- GL_KHR_parallel_shader_compile 可以多线程编译 shader。这个扩展从 ARB 版本提升而来,对,ARB 不进入核心还能再提升成 KHR。GL 和 GLES 都能用。
- WGL_ARB_create_context_no_error 和 GXL_ARB_create_context_no_error 用来建立 GL_KHR_no_error 的 context。
本文修改自龚敏敏的知乎专栏:震惊!时间之神又给了这个古老的API+了0.1