روابط صافية لـ Google Shaderc.
تستخدم هذه العينة vk.net لإنشاء وحدة التظليل. عند النجاح ، سيحتفظ كائن Result مؤشرًا أصليًا على رمز Spirv الذي تم إنشاؤه مناسبًا لحقل PCODE ShaderModuleCreateInfo . سيبقى هذا المؤشر ساري المفعول حتى التخلص من 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 ) ; يتم إنشاء مثيل Options الافتراضية بواسطة مُنشئ Compiler الذي يمكّن الدقة. يمكنك توفير مثيل خيارات مخصصة لمؤسسة التحويل البرمجي.
Compiler comp = new Compiler ( opt ) ;
comp . Options . InvertY = true ; كما في C/C ++ ، قد يكون لديك تشمل محلي أو عالمي (مغلق في "" أو <>). سيتم البحث في "تشمل محلي" مغلق في "" من الملف المصدر الحالي. سيتم البحث في Global Conserted في "<>" في الدلائل المدرجة في 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 ) {
.. .