Beau nets pour Google Shader.
Cet échantillon utilise VK.net pour créer le module Shader. Au cours du succès, Result Object conservera un pointeur natif sur le code Spirv généré adapté au champ de pCODE ShaderModuleCreateInfo . Ce pointeur restera valide jusqu'à l'élimination 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 bibliothèque ShaderC offre la possibilité d'ajouter des instructions #include comme dans C / C ++ . Cette fonctionnalité est activée ou non dans le constructeur de classe d' Options , la valeur par défaut est activée.
Options opt = new Options ( false ) ; Une instance Options par défaut est créée par le constructeur Compiler qui permette la résolution inclue. Vous pouvez fournir une instance d'options personnalisées au constructeur du compilateur.
Compiler comp = new Compiler ( opt ) ;
comp . Options . InvertY = true ; Comme en C / C ++ , vous pouvez avoir un inclus local ou global (enfermé dans "" ou <>). Local comprend ci-joint dans "" sera recherché à partir du fichier source analysé actuel. Global comprend ci-joint dans '<>' sera recherché dans les répertoires répertoriés dans Options.IncludeDirectories . Les PATHES peuvent être relatives au répertoire exécutable ou absolue.
comp . Options . IncludeDirectories . AddRange ( "shaders" , @"c:test" ) ; Si vous souhaitez remplacer la résolution inclue par défaut, pour rechercher des Ressources embarqués par exemple, dérivez la classe Options et remplacez la méthode TryFindInclude .
class OptionsWithCustomIncResolve : Options {
protected override bool TryFindInclude ( string sourcePath , string includePath , IncludeType incType , out string incFile , out string incContent ) {
.. .