Bintings netos para Google Shaderc.
Esta muestra usa vk.net para crear el módulo sombreador. En el éxito, el objeto Result mantendrá un puntero nativo en el código SIGV generado adecuado para el campo ShaderModuleCreateInfo pcode. Este puntero se mantendrá válido hasta la eliminación 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 ) ) ; La biblioteca de sábes shaderR proporciona la capacidad de agregar declaraciones #include como en c/c ++ . Esta funcionalidad está habilitada o no en el constructor de clase Options , el valor predeterminado está habilitado.
Options opt = new Options ( false ) ; El constructor Compiler crea una instancia Options predeterminada que habilita la resolución de incluir. Puede proporcionar una instancia de opciones personalizadas al constructor del compilador.
Compiler comp = new Compiler ( opt ) ;
comp . Options . InvertY = true ; Como en C/C ++ , puede tener incluido local o global (encerrado en "" o <>). Local incluye incluido en "" se buscará desde el archivo fuente analizado actual. Global incluye incluido en '<>' se buscará en directorios enumerados en Options.IncludeDirectories . Las retas pueden ser relativas al directorio ejecutable o absoluto.
comp . Options . IncludeDirectories . AddRange ( "shaders" , @"c:test" ) ; Si desea anular la resolución de inclusión predeterminada, para buscar resesas integradas, por ejemplo, deriva la clase Options y anule el método TryFindInclude .
class OptionsWithCustomIncResolve : Options {
protected override bool TryFindInclude ( string sourcePath , string includePath , IncludeType incType , out string incFile , out string incContent ) {
.. .