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 ) {
.. .