Binding bersih untuk Google Shaderc.
Sampel ini menggunakan vk.net untuk membuat modul shader. Pada keberhasilan, Objek Result akan memegang pointer asli pada kode spirv yang dihasilkan yang cocok untuk bidang pcode ShaderModuleCreateInfo . Pointer ini akan tetap valid sampai 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 ) ) ; Perpustakaan Shaderc menyediakan kemampuan untuk menambahkan pernyataan #include seperti pada C/C ++ . Fungsionalitas ini diaktifkan atau tidak dalam konstruktor kelas Options , default diaktifkan.
Options opt = new Options ( false ) ; Contoh Options default dibuat oleh konstruktor Compiler yang memungkinkan resolusi sertakan. Anda dapat memberikan instance opsi khusus untuk konstruktor kompiler.
Compiler comp = new Compiler ( opt ) ;
comp . Options . InvertY = true ; Seperti dalam C/C ++ , Anda mungkin memiliki lokal atau global termasuk (terlampir dalam "" atau <>). Lokal termasuk terlampir dalam "" akan dicari dari file sumber parsed saat ini. Global termasuk terlampir di '<>' akan dicari di direktori yang tercantum dalam Options.IncludeDirectories . Jalan setapak mungkin relatif terhadap direktori yang dapat dieksekusi, atau absolut.
comp . Options . IncludeDirectories . AddRange ( "shaders" , @"c:test" ) ; Jika Anda ingin mengesampingkan resolusi termasuk default, untuk mencari sumber daya tertanam misalnya, turunkan kelas Options dan angkanya metode TryFindInclude .
class OptionsWithCustomIncResolve : Options {
protected override bool TryFindInclude ( string sourcePath , string includePath , IncludeType incType , out string incFile , out string incContent ) {
.. .