2017-04-22 4 views
1

내 GLSL 쉐이더를 SPIR-V 바이너리로 컴파일하고이를 내 OpenGL 프로젝트에서 사용하고 싶습니다.OpenGL ARB_gl_spirv 확장 프로그램을 사용하는 방법은 무엇입니까?

glslang을 사용하여 glsl 쉐이더를 spir-v로 컴파일 할 수 있습니다. 하지만 내 C + + 프로젝트에서 그것을 사용하는 방법에 대한 자습서를 발견하지 않았습니다. 이 바이너리를로드하고 그것들로부터 셰이더 프로그램을 만드는 방법?

답변

3

C++에서 다른 바이너리 파일을로드하는 것처럼 SPIR-V 바이너리를로드하십시오. 그런 다음 셰이더를 컴파일 할 때 glShaderBinaryglSpecializeShader으로 전화해야합니다.

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); 
관련 문제