กลับไปหน้าบทความ

อ่าน 4 นาที

แสดงรายการ

รายการแสดงผลหรือที่เรียกว่ารายการคำสั่งในDirect3D 12และบัฟเฟอร์คำสั่งในVulkanคือชุดคำสั่งกราฟิกหรือคำสั่งที่ทำงานเมื่อมีการเรียกใช้รายการระบบที่ใช้ฟังก์ชันรายการแสดงผลเรียกว่า ระบบ

แสดงรายการ

รายการแสดงผลหรือที่เรียกว่ารายการคำสั่งในDirect3D 12และบัฟเฟอร์คำสั่งในVulkanคือชุดคำสั่งกราฟิกหรือคำสั่งที่ทำงานเมื่อมีการเรียกใช้รายการ[ 1 ]ระบบที่ใช้ฟังก์ชันรายการแสดงผลเรียกว่า ระบบ โหมดเก็บรักษาในขณะที่ระบบที่ไม่ใช้เรียกว่า ระบบ โหมดทันทีในOpenGLรายการแสดงผลมีประโยชน์ในการวาดรูปทรงเรขาคณิตเดียวกันซ้ำ หรือใช้ชุดการเปลี่ยนแปลงสถานะหลายครั้ง[ 2 ] [ 3 ]ประโยชน์นี้ยังใช้กับรายการคำสั่งแบบรวมของ Direct3D 12 ด้วย ใน Direct3D 12 และ Vulkan รายการแสดงผลมักใช้สำหรับการบันทึกและการเรียกใช้ต่อเฟรม

จุดเริ่มต้นของจอแสดงผลเวกเตอร์

จอภาพเวกเตอร์หรือจอแสดงผลแบบเขียนด้วยลายมือในช่วงทศวรรษ 1960 และ 1970 ใช้ การเบี่ยงเบนลำแสง อิเล็กตรอนเพื่อวาดส่วนของเส้นจุด และบางครั้งก็เส้นโค้งโดยตรงบนหน้าจอ CRTเนื่องจากภาพจะจางหายไปทันที จึงจำเป็นต้องวาดใหม่หลายครั้งต่อวินาที ( จอ CRT แบบหลอดเก็บข้อมูลจะเก็บภาพไว้จนกว่าจะปิด แต่ไม่เหมาะสำหรับกราฟิกแบบโต้ตอบ) เพื่อรีเฟรชจอแสดงผล จะใช้ CPU เฉพาะที่เรียกว่าตัวประมวลผลการแสดงผลหรือหน่วยประมวลผลการแสดงผล (DPU) ซึ่งมีบัฟเฟอร์หน่วยความจำสำหรับ "รายการแสดงผล" "ไฟล์แสดงผล" หรือ "โปรแกรมแสดงผล" ที่มีพิกัดส่วนของเส้นและข้อมูลอื่นๆ ตัวประมวลผลการแสดงผลขั้นสูงยังรองรับ คำสั่ง ควบคุมการไหลซึ่งมีประโยชน์สำหรับการวาดกราฟิกซ้ำๆ เช่น ข้อความ และบางตัวสามารถทำการแปลงพิกัดเช่นการฉายภาพ 3 มิติได้[ 4 ] [ 5 ]

ฟังก์ชันการแสดงรายการของคอมพิวเตอร์ที่บ้าน

หนึ่งในระบบแรกๆ ที่มีรายการแสดงผลที่แท้จริงคือคอมพิวเตอร์ Atari 8 บิตรายการแสดงผล (เรียกตามศัพท์เฉพาะของ Atari) คือชุดคำสั่งสำหรับANTICซึ่งเป็นตัวประมวลผลร่วมวิดีโอที่ใช้ในเครื่องเหล่านี้ โปรแกรมนี้ซึ่งจัดเก็บไว้ในหน่วยความจำของคอมพิวเตอร์และดำเนินการโดย ANTIC แบบเรียลไทม์ สามารถระบุบรรทัดว่าง โหมดข้อความหกโหมดและโหมดกราฟิกแปดโหมด ส่วนใดของหน้าจอที่สามารถเลื่อนละเอียดในแนวนอนหรือแนวตั้งได้ และเรียกใช้การขัดจังหวะรายการแสดงผล (เรียกว่าการขัดจังหวะแรสเตอร์หรือHBIในระบบอื่นๆ) [ 6 ]

คอมพิวเตอร์ตระกูล Amstrad PCWมีฟังก์ชันแสดงรายการแสดงผลที่เรียกว่า 'Roller RAM' ซึ่งเป็นพื้นที่ RAM ขนาด 512 ไบต์ ประกอบด้วยตัวชี้ 16 บิต จำนวน 256 ตัว ใน RAM โดยแต่ละตัวชี้ไปยังแต่ละบรรทัดของจอแสดงผลขนาด 720 × 256 พิกเซล ตัวชี้แต่ละตัวระบุตำแหน่งของพิกเซลขาวดำขนาด 90 ไบต์ ซึ่งเก็บสถานะพิกเซล 720 พิกเซลของแต่ละบรรทัด สถานะพิกเซล 8 พิกเซลจำนวน 90 ไบต์นั้นเว้นระยะห่างกัน 8 ไบต์ ดังนั้นจึงมีพื้นที่ว่าง 7 ไบต์ระหว่างข้อมูลพิกเซลแต่ละไบต์ ซึ่งเหมาะสมกับวิธีการสร้างบัฟเฟอร์หน้าจอใน RAM ของ PCW ที่เน้นการแสดงผลข้อความ โดยแถว 8 แถวของอักขระตัวแรกจะถูกเก็บไว้ใน 8 ไบต์แรก แถวของอักขระตัวที่สองจะถูกเก็บไว้ใน 8 ไบต์ถัดไป และอื่นๆ วงจร Roller RAM ถูกนำมาใช้เพื่อเพิ่มความเร็วในการเลื่อนหน้าจอ เนื่องจากหากใช้โปรเซสเซอร์ Z80 ความเร็ว 3.4 MHz ในการเลื่อนบัฟเฟอร์แสดงผลขนาด 23 KB 'ด้วยตนเอง' หรือในซอฟต์แวร์ จะช้าเกินไปจนรับไม่ได้ ค่าเริ่มต้นของ Roller RAM ที่ใช้ในการรีเฟรชหน้าจอแต่ละครั้งจะถูกควบคุมโดยรีจิสเตอร์ I/O ที่เขียนได้ใน Z80 ดังนั้นจึงสามารถเลื่อนหน้าจอได้ง่ายๆ โดยการเปลี่ยนค่าในรีจิสเตอร์ I/O นี้

อีกระบบหนึ่งที่ใช้คุณสมบัติคล้าย Display List ในฮาร์ดแวร์คือAmigaซึ่งไม่ใช่เรื่องบังเอิญที่ได้รับการออกแบบโดยบุคคลกลุ่มเดียวกันกับที่พัฒนาฮาร์ดแวร์แบบกำหนดเองสำหรับคอมพิวเตอร์ Atari 8 บิต เมื่อได้รับคำสั่งให้สร้างโหมดการแสดงผลแล้ว มันจะทำเช่นนั้นโดยอัตโนมัติสำหรับทุกเส้นสแกนถัดไป คอมพิวเตอร์ยังมีตัวประมวลผลร่วมเฉพาะที่เรียกว่า " Copper " ซึ่งรันโปรแกรมง่ายๆ หรือ "Copper List" ที่มีจุดประสงค์เพื่อแก้ไขรีจิสเตอร์ฮาร์ดแวร์ให้ซิงค์กับการแสดงผล คำสั่ง Copper List สามารถสั่งให้ Copper รอจนกว่าการแสดงผลจะถึงตำแหน่งที่กำหนดบนหน้าจอ จากนั้นจึงเปลี่ยนเนื้อหาของรีจิสเตอร์ฮาร์ดแวร์ ในทางปฏิบัติ มันคือโปรเซสเซอร์ที่ทุ่มเทให้กับการจัดการการขัดจังหวะแบบแรสเตอร์Copperถูกใช้โดย Workbench เพื่อผสมผสานโหมดการแสดงผลหลายโหมด (ความละเอียดและจานสีหลายแบบบนจอภาพพร้อมกัน) และโดยโปรแกรมจำนวนมากเพื่อสร้างเอฟเฟกต์สีรุ้งและไล่ระดับสีบนหน้าจอ Amiga Copper ยังสามารถกำหนดค่าเอ็นจิ้นสไปรท์ใหม่ได้กลางเฟรม โดยมีความล่าช้าเพียงหนึ่งเส้นสแกนเท่านั้น สิ่งนี้ทำให้ Amiga สามารถวาดสไปรต์ได้มากกว่า 8 ตัวตามที่กำหนดไว้ในฮาร์ดแวร์ ตราบใดที่สไปรต์เพิ่มเติมเหล่านั้นไม่ได้ใช้เส้นสแกนร่วมกัน (หรือช่องว่างเส้นสแกนหนึ่งเส้น) กับสไปรต์อื่นมากกว่า 7 ตัว กล่าวคือ ตราบใดที่สไปรต์อย่างน้อยหนึ่งตัววาดเสร็จแล้ว ก็สามารถเพิ่มสไปรต์อีกตัวลงด้านล่างบนหน้าจอได้ นอกจากนี้ ชิปเซ็ต AGA 32 บิตรุ่นหลังยังช่วยให้สามารถวาดสไปรต์ขนาดใหญ่ขึ้น (มีพิกเซลต่อแถวมากขึ้น) ในขณะที่ยังคงรักษาการมัลติเพล็กซ์แบบเดิมไว้ได้ Amiga ยังมีฮาร์ดแวร์เฉพาะสำหรับการเลื่อนบล็อก ("blitter") ซึ่งสามารถวาดวัตถุขนาดใหญ่ลงในเฟรมบัฟเฟอร์ได้ ซึ่งมักใช้แทนหรือเพิ่มเติมจากสไปรต์

ในระบบที่ดั้งเดิมกว่านั้น ผลลัพธ์ของรายการแสดงผลสามารถจำลองได้ แต่ต้องแลกมาด้วยการเขียนข้อมูลที่ใช้ CPU อย่างหนักไปยังรีจิสเตอร์โหมดการแสดงผล การควบคุมสี หรือรีจิสเตอร์เอฟเฟกต์ภาพอื่นๆ ในอุปกรณ์วิดีโอ แทนที่จะเป็นชุดคำสั่งการเรนเดอร์ที่ดำเนินการโดยอุปกรณ์ ดังนั้น จึงจำเป็นต้องสร้างภาพที่แสดงผลโดยใช้กระบวนการเรนเดอร์อื่นๆ ไม่ว่าจะก่อนหรือระหว่างที่การสร้างภาพแสดงผลที่ขับเคลื่อนด้วย CPU ทำงาน ในหลายกรณี ภาพจะถูกแก้ไขหรือเรนเดอร์ใหม่ระหว่างเฟรมด้วย จากนั้นภาพจะถูกแสดงผลในรูปแบบต่างๆ ขึ้นอยู่กับวิธีการที่โค้ดการแสดงผลที่ขับเคลื่อนด้วย CPU ถูกนำไปใช้

ตัวอย่างของผลลัพธ์ที่สามารถทำได้บนเครื่องรุ่นเก่าเหล่านี้ซึ่งต้องใช้การประมวลผลวิดีโอด้วย CPU ได้แก่ เอฟเฟกต์ต่างๆ เช่น โหมด FLIของ Commodore 64/128 หรือRainbow ProcessingบนZX Spectrum

การใช้งานใน OpenGL

ในการกำหนดขอบเขตของรายการแสดงผล จะใช้ฟังก์ชัน glNewListและglEndListและในการดำเนินการรายการglCallListจะใช้ฟังก์ชัน คำสั่งการแสดงผลเกือบทั้งหมดที่เกิดขึ้นระหว่างการเรียกใช้ฟังก์ชันจะถูกเก็บไว้ในรายการแสดงผล คำสั่งที่มีผลต่อสถานะของไคลเอ็นต์จะไม่ถูกเก็บไว้ในรายการแสดงผล[ 7 ]รายการแสดงผลจะถูกตั้งชื่อด้วยค่าจำนวนเต็ม และการสร้างรายการแสดงผลที่มีชื่อเดียวกันกับรายการที่สร้างไว้แล้วจะแทนที่รายการแรก[ 8 ]

ฟังก์ชัน นี้glNewListต้องการอาร์กิวเมนต์สองตัว ได้แก่ จำนวนเต็มที่แสดงชื่อของรายการ และการแจงนับสำหรับโหมดการคอมไพล์ โหมดทั้งสองได้แก่GL_COMPILE_AND_EXECUTEซึ่งจะคอมไพล์และดำเนินการทันที และGL_COMPILEซึ่งจะคอมไพล์รายการเท่านั้น[ 9 ]

รายการแสดงผลช่วยให้สามารถใช้ รูปแบบการเรนเดอร์ โหมดเก็บรักษาซึ่งเป็นระบบที่คำสั่งกราฟิกจะถูกบันทึก (เก็บรักษา) ไว้เพื่อดำเนินการตามลำดับในภายหลัง ซึ่งตรงกันข้ามกับโหมดทันทีซึ่งคำสั่งกราฟิกจะถูกดำเนินการทันทีเมื่อมีการเรียกใช้จากไคลเอ็นต์[ 10 ]

การใช้งานใน Direct3D 12

รายการคำสั่งถูกสร้างขึ้นโดยใช้ID3D12Device::CreateCommandListฟังก์ชัน[ 11 ]รายการคำสั่งอาจถูกสร้างขึ้นได้หลายประเภท ได้แก่ แบบตรง แบบรวมกลุ่ม แบบคำนวณ แบบคัดลอก แบบถอดรหัสวิดีโอ แบบประมวลผลวิดีโอ และแบบเข้ารหัสวิดีโอ รายการคำสั่งแบบตรงระบุว่า GPU สามารถดำเนินการรายการคำสั่งได้ และไม่ได้รับสถานะใดๆ จาก GPU [ 12 ]กลุ่มคำสั่ง เหมาะที่สุดสำหรับการจัดเก็บและดำเนินการชุดคำสั่งขนาดเล็กจำนวนครั้งเท่าใดก็ได้ การใช้งานจะแตกต่างจากรายการคำสั่งทั่วไป ซึ่งคำสั่งที่จัดเก็บไว้ในรายการคำสั่งมักจะถูกดำเนินการเพียงครั้งเดียว[ 11 ]รายการคำสั่งคำนวณใช้สำหรับการคำนวณทั่วไป โดยการใช้งานทั่วไปคือการคำนวณmipmaps [ 13 ] รายการคำสั่งคัดลอกใช้สำหรับการคัดลอกโดยเฉพาะ และรายการคำสั่งถอดรหัสวิดีโอและประมวลผลวิดีโอใช้สำหรับการถอดรหัสและประมวลผลวิดีโอตามลำดับ[ 12 ]

เมื่อสร้างรายการคำสั่ง รายการคำสั่งจะอยู่ในสถานะการบันทึก สามารถนำรายการคำสั่งกลับมาใช้ใหม่ได้โดยการเรียกID3D12GraphicsCommandList::Resetฟังก์ชัน หลังจากบันทึกคำสั่งแล้ว รายการคำสั่งจะต้องเปลี่ยนสถานะออกจากการบันทึกโดยการเรียก จากนั้นID3D12GraphicsCommandList::Closeรายการคำสั่งจะถูกดำเนินการโดยการID3D12CommandQueue::ExecuteCommandListsเรียก[ 11 ]

ดูเพิ่มเติม

อ่านเพิ่มเติม

  • White, Steven; Danielsson, David; Jenks, Alma; Satran, Michael (2023-03-08). "ปรัชญาการออกแบบของคิวคำสั่งและรายการคำสั่ง - แอป Win32". learn.microsoft.com . สืบค้นเมื่อ 2024-01-26.
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Display_list&oldid=1347283737 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ แสดงรายการ

รายการแสดงผลหรือที่เรียกว่ารายการคำสั่งในDirect3D 12และบัฟเฟอร์คำสั่งในVulkanคือชุดคำสั่งกราฟิกหรือคำสั่งที่ทำงานเมื่อมีการเรียกใช้รายการระบบที่ใช้ฟังก์ชันรายการแสดงผลเรียกว่า ระบบ

จุดเริ่มต้นของจอแสดงผลเวกเตอร์

จอภาพ เวกเตอร์ หรือ จอแสดงผลแบบเขียนด้วยลายมือ ในช่วงทศวรรษ 1960 และ 1970 ใช้ การเบี่ยงเบนลำแสง อิเล็กตรอน เพื่อวาด ส่วนของเส้น จุด และบางครั้งก็เส้นโค้งโดยตรงบน หน้าจอ CRT เนื่องจากภาพจะจางหายไปทันที จึงจำเป็นต้องวาดใหม่หลายครั้งต่อวินาที ( จอ CRT...

ฟังก์ชันการแสดงรายการของคอมพิวเตอร์ที่บ้าน

หนึ่งในระบบแรกๆ ที่มีรายการแสดงผลที่แท้จริงคือ คอมพิวเตอร์ Atari 8 บิต รายการแสดงผล (เรียกตามศัพท์เฉพาะของ Atari) คือชุดคำสั่งสำหรับ ANTIC ซึ่งเป็นตัวประมวลผลร่วมวิดีโอที่ใช้ในเครื่องเหล่านี้ โปรแกรมนี้ซึ่งจัดเก็บไว้ในหน่วยความจำของคอมพิวเตอร์และดำเนินการโดย...

การใช้งานใน OpenGL

ในการกำหนดขอบเขตของรายการแสดงผล จะใช้ฟังก์ชัน glNewList และ glEndList และในการดำเนินการรายการ glCallList จะใช้ฟังก์ชัน คำสั่งการแสดงผลเกือบทั้งหมดที่เกิดขึ้นระหว่างการเรียกใช้ฟังก์ชันจะถูกเก็บไว้ในรายการแสดงผล...