티스토리 뷰
귀찮은 작업이다
검색하면 #include 파싱해서 소스 넣어라 하는 글이 나온다
https://www.opengl.org/discussion_boards/showthread.php/169209-include-in-glsl
extension 통해 하는 방법
아래에 설명이 나온다
https://computergraphics.stackexchange.com/questions/100/sharing-code-between-multiple-glsl-shaders
https://www.g-truc.net/post-0267.html
실제 하는 법은
https://github.com/nvpro-samples/shared_sources/blob/master/nv_helpers_gl/GLSLProgram.cpp
glew를 통해 include 지원하는 지 체크
assert(GLEW_ARB_shading_language_include)
#include 가 있는 파일에 아래 구문 추가
#extension GL_ARB_shading_language_include : enable
glCompilerShader 대신
glCompileShaderIncludeARB(shader, 1, incPaths, NULL);
incPaths 는 안타깝게 실제 path가 아닌 가상의 shader directory에 대한 pathes 들이다 저 path는 아래 구문을 통해 가상 path 랑 그 내용을 채워줘야한다
glNamedStringARB(GL_SHADER_INCLUDE_ARB, ...)
파싱하는 법
이식성, 디버깅 (extension 방법은 Nsight 미지원) 때문에 그냥 짜기도 한다
nv_helpers_gl/programmanager.cpp 이 #include 파싱하는 방법이긴 하나 아래 구문으로 굳이 등록하게 해두었다
progManager.registerInclude("common.h", "common.h");
#include 구문은 디버깅용으로 남기고 line 번호도 추가하므로 참고하면 될듯
저 코드의 original 은 https://github.com/g-truc/ogl-samples/blob/4.5.4/framework/compiler.hpp
shader compile이 argument로 path를 추가하도록 되어있다
binary 로 저장/로드/검사
https://github.com/g-truc/ogl-samples/blob/master/samples/gl-410-program-binary.cpp
'Game > Graphics' 카테고리의 다른 글
Framebuffer (0) | 2018.02.20 |
---|---|
Area light (0) | 2018.02.19 |
OpenGL profiler (0) | 2018.02.14 |
Modernize OpenGL (DSA) (0) | 2018.02.14 |
IBL (7) Baking Light probe (0) | 2018.02.13 |
- Total
- Today
- Yesterday