shaderc.net
1.0.0
Google Shaderc的净绑定。
该示例使用vk.net创建着色器模块。在成功时, Result对象将在适用于ShaderModuleCreateInfo PCODE字段的生成的SPIRV代码上容纳本机指针。该指针将保持有效,直到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 ) ; Compiler构造函数创建了一个默认的Options实例,该实例可以启用包含分辨率。您可以向编译器构造函数提供自定义选项实例。
Compiler comp = new Compiler ( opt ) ;
comp . Options . InvertY = true ;与C/C ++一样,您可能具有本地或全局(在“”或<>中包含)。将从当前解析的源文件中搜索“”本地包含在“”中。 “ <>”中包含的全局包括在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 ) {
.. .