如何使用OpenGL ARB_gl_spirv扩展?

Ite*_*tor 3 opengl glsl spir-v

我想将 GLSL 着色器编译为 SPIR-V 二进制文件,并在我的 OpenGL 项目中使用它。

我发现glslang,使用我可以将 glsl 着色器编译为 spir-v。但我还没有找到任何关于如何在我的 C++ 项目中使用它的教程。如何加载这些二进制文件并从中创建着色器程序?

Sur*_*ine 5

加载 SPIR-V 二进制文件就像加载 C++ 中的任何其他二进制文件一样。然后,当您编译着色器时,必须调用glShaderBinaryand glSpecializeShader

GLuint vertexShader = glCreateShader( GL_VERTEX_SHADER );
glShaderBinary( 1, &vertexShader, GL_SHADER_BINARY_FORMAT_SPIR_V_ARB, vertexData, sizeof( vertexData ) ); // vertexData is the SPIR-V file contents
glSpecializeShader( vertexShader, "main", 0, nullptr, nullptr );
glAttachShader( program, vertexShader );
Run Code Online (Sandbox Code Playgroud)