Сеть привязки для Google Shaderc.
Этот образец используйте vk.net для создания модуля шейдера. При успехе объект Result будет удерживать нативный указатель на сгенерированном коде spirv, подходящего для поля ShaderModuleCreateInfo PCODE. Этот указатель будет оставаться действительным до утилизации Result .
using ( Compiler comp = new Compiler ( ) ) {
using ( Result res = comp . Compile ( "test.vert" , ShaderKind . VertexShader ) ) {
if ( res . Status == Status . Success ) {
VkShaderModuleCreateInfo ci = VkShaderModuleCreateInfo . New ( ) ;
ci . codeSize = res . codeSize ;
ci . pCode = res . code ;
vkCreateShaderModule ( VkDev , ref moduleCreateInfo , IntPtr . Zero , out VkShaderModule shaderModule ) ) ; Библиотека Shaderc обеспечивает возможность добавлять операторы #include , как в C/C ++ . Эта функциональность включена или не в конструкторе класса Options , по умолчанию включено.
Options opt = new Options ( false ) ; Примеры Options по умолчанию создается конструктором Compiler , который включает в себя разрешение включения. Вы можете предоставить пользовательский экземпляр опций для конструктора компилятора.
Compiler comp = new Compiler ( opt ) ;
comp . Options . InvertY = true ; Как и в C/C ++ , вы можете иметь локальный или глобальный включать (прилагается в «» или <>). Local включает в себя прилагаемое в «» будет поиск из текущего исходного файла. Global включает в себя прилагаемое в «<>» в каталогах, перечисленных в Options.IncludeDirectories . Пути могут быть относительно исполняемого каталога или абсолютного.
comp . Options . IncludeDirectories . AddRange ( "shaders" , @"c:test" ) ; Если вы хотите переопределить разрешение по умолчанию, для поиска встроенных ressources, например, вывести класс Options и переопределить метод TryFindInclude .
class OptionsWithCustomIncResolve : Options {
protected override bool TryFindInclude ( string sourcePath , string includePath , IncludeType incType , out string incFile , out string incContent ) {
.. .