การผูกสุทธิสำหรับ Google Shaderc
ตัวอย่างนี้ใช้ vk.net เพื่อสร้างโมดูล Shader ในความสำเร็จวัตถุ 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 Library ให้ความสามารถในการเพิ่มข้อความ #include เช่นใน C/C ++ ฟังก์ชั่นนี้เปิดใช้งานหรือไม่อยู่ในคอนสตรัคเตอร์คลาส Options ค่าเริ่มต้นจะเปิดใช้งาน
Options opt = new Options ( false ) ; อินสแตนซ์ Options เริ่มต้นถูกสร้างขึ้นโดย Compiler คอนสตรัคเตอร์ซึ่งเปิดใช้งานความละเอียดรวม คุณอาจให้อินสแตนซ์ตัวเลือกที่กำหนดเองให้กับตัวสร้างคอมไพเลอร์
Compiler comp = new Compiler ( opt ) ;
comp . Options . InvertY = true ; เช่นเดียวกับใน C/C ++ คุณอาจมีท้องถิ่นหรือทั่วโลกรวม (ล้อมรอบใน "" หรือ <>) ท้องถิ่นรวมถึงสิ่งที่แนบมาใน "" จะถูกค้นหาจากไฟล์ต้นฉบับที่แยกวิเคราะห์ปัจจุบัน Global รวมถึงสิ่งที่แนบมาใน '<>' จะถูกค้นหาในไดเรกทอรีที่ระบุไว้ใน 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 ) {
.. .