我想将我的GLSL着色器编译为SPIR-V二进制文件,并在我的OpenGL项目中使用它。
我找到glslang
,使用我可以将glsl着色器编译为spir-v。但我还没有找到关于如何在我的C ++项目中使用它的任何教程。如何加载这些二进制文件并从中创建着色器程序?
答案 0 :(得分:4)
加载SPIR-V二进制文件就像在C ++中加载任何其他二进制文件一样。然后,当您编译着色器时,您必须致电glShaderBinary
和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 );