2013-11-24 2 views
4

제 질문은 - 라이브러리를 OpenGL GLSL 셰이더로 가져 오는 방법입니까? 내 말은 - 쉐이더 코드와 라이브러리 코드를 섞기 위해 문자열을 연결하는 API에 대한 외관이 아닌 OpenGL 자체가 지원하는 방식일까요?OpenGL GLSL에서 라이브러리를 가져 오는 방법

+0

Thx 질문에 대한 @ MikeMx7f 대답하지만 그것은 지금 moduluar 파일을 glsl 파일을 만드는 적절한 방법이 보인다. 또한 방금 문제를 게시했습니다. http://stackoverflow.com/questions/20604221/how-to-make-glsl-shaders-modular-without-using-string-manipulation. – Diversity

답변

5

확장자가없는 OpenGL 자체에서 지원되는 방법은 없습니다. OpenGL을 감싸는 많은 엔진이이 문제를 해결하기 위해 #include 매크로를 처리하기 위해 자체 전 처리기를 추가하지만 "셰이더 코드를 라이브러리 코드와 혼합하기 위해 문자열을 연결하는 API의 외관"으로 적합합니다.

ARB_shading_language_include 확장은이 기능의 OpenGL 버전을 제공하지만 특정 컴퓨터에서는 사용하지 못할 수 있습니다. 이 확장 프로그램에 대한 개요는 다음 질문을 참조하십시오. How to Using the #include in glsl support ARB_shading_language_include

1

실제 해결책이 없습니다.

는하지만 난 문제가 무엇인지 알고 있다고 생각 :

문제는 모든 쉐이더가 완전히 클라이언트 코드에 를 연관되어 있다는 것입니다 : 모든 쉐이더 프로그램은 클라이언트 프로그램없이 전혀 이해되지 않는다.

OOP에 선언적 언어를 통합 한 것처럼 보이거나 무엇이든 언어와 비슷합니다.

GLSL의 문제가 아니므로 클라이언트 언어의 예 : 입니다. C++, Java (Android)에서 으로 문제가 해결되었습니다. 하지만 내 의견.

+0

나는 이것에 반드시 동의하지 않는다. 여러 다른 쉐이더간에 코드를 공유하고자하는 몇 가지 이유가 있습니다. 예를 들어, GLSL이 제공하지 않는 수학 함수 나 HSV에서 RGB 변환을 원할 수 있습니다. –

관련 문제