Ligações líquidas para o Google Shadc.
Esta amostra usa vk.net para criar o módulo shader. No sucesso, o objeto Result manterá um ponteiro nativo no código SPIRV gerado adequado para o campo ShaderModuleCreateInfo pcode. Este ponteiro permanecerá válido até o descarte 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 ) ) ; A biblioteca Shadc fornece a capacidade de adicionar instruções #include como em C/C ++ . Essa funcionalidade está ativada ou não no construtor da classe de Options , o padrão está ativado.
Options opt = new Options ( false ) ; Uma instância Options padrão é criada pelo construtor Compiler que permite a resolução de incluir. Você pode fornecer uma instância de opções personalizadas para o construtor do compilador.
Compiler comp = new Compiler ( opt ) ;
comp . Options . InvertY = true ; Como em C/C ++ , você pode ter incluído local ou global (incluído em "" ou <>). O local inclui incluído em "" será pesquisado no atual arquivo de origem analisada. O Global Inclui incluído em '<>' será pesquisado em diretórios listados em Options.IncludeDirectories . Os caminhos podem ser relativos ao diretório executável, ou absoluto.
comp . Options . IncludeDirectories . AddRange ( "shaders" , @"c:test" ) ; Se você deseja substituir o padrão, inclua resolução, procurar o Ressources incorporado, por exemplo, derivar a classe Options e substituir o método TryFindInclude .
class OptionsWithCustomIncResolve : Options {
protected override bool TryFindInclude ( string sourcePath , string includePath , IncludeType incType , out string incFile , out string incContent ) {
.. .