OpenGL หรือ DirectX: ไหนดีกว่ากัน ลักษณะเปรียบเทียบ คุณสมบัติ เคล็ดลับ การ์ดแสดงผล

เห็นได้ชัดว่าผู้ใช้หลายคนโดยเฉพาะอย่างยิ่งผู้ที่ต้องการใช้คอมพิวเตอร์เพื่อติดตั้งและเล่นเกมที่ใช้ทรัพยากรจำนวนมากรู้ว่าในการตั้งค่ากราฟิกที่คุณสามารถใช้ได้ วิธีพิเศษเร่งความเร็วเอาต์พุตภาพและปรับปรุงคุณภาพของภาพ OpenGL หรือ DirectX จะใช้ทำอะไรดี. ใช้งานได้เต็มที่ทรัพยากรที่ซ่อนอยู่ทั้งหมด ระบบคอมพิวเตอร์และบรรลุผล ประสิทธิภาพสูงสุด- คำถามนี้ค่อนข้างขัดแย้ง และมักจะเป็นไปไม่ได้ที่จะตอบอย่างแน่ชัดเพื่อสนับสนุนแพลตฟอร์มใดแพลตฟอร์มหนึ่ง เนื่องจากทุกอย่างขึ้นอยู่กับเป้าหมายเฉพาะที่ผู้ใช้หรือนักพัฒนาตั้งไว้สำหรับตัวเองตลอดจนแต่ละแพลตฟอร์ม สถานการณ์เฉพาะซึ่งอาจเกี่ยวข้องบางส่วนกับฮาร์ดแวร์ในรูปแบบของตัวเร่งกราฟิก การสนับสนุนซอฟต์แวร์ในรูปแบบของไดรเวอร์และบางส่วน ด้านเพิ่มเติม- ลองคิดดูว่าอันไหนดีกว่ากัน - OpenGL หรือ DirectX - โดยหันไปหาแหล่งข้อมูลอย่างเป็นทางการและอาศัยความคิดเห็นของผู้ใช้และนักพัฒนาซอฟต์แวร์ที่อาจต้องการการสนับสนุนสำหรับเทคโนโลยีดังกล่าว

OpenGL และ DirectX คืออะไร

เริ่มต้นด้วยความจริงที่ว่าในหมู่ผู้ใช้ทั่วไปมีความเข้าใจผิดว่าส่วนประกอบทั้งสองที่อธิบายไว้นี้เป็นเอ็นจิ้นกราฟิก นี่คือคำถามที่ไม่ถูกต้องเกิดขึ้นเกี่ยวกับเอ็นจิ้นไหนดีกว่า - OpenGL หรือ DirectX

ความจริงก็คือแพลตฟอร์มเหล่านี้เกี่ยวข้องกับเอ็นจิ้นเหล่านี้เพียงบางส่วนเท่านั้น เนื่องจากเป็นแพลตฟอร์มเหล่านี้โดยเฉพาะ ซอฟต์แวร์ซึ่งช่วยให้เอ็นจิ้นโปรแกรม (เกม) สามารถโต้ตอบได้ อุปกรณ์ที่ติดตั้ง(ส่วนใหญ่มักมีวิดีโอและ การ์ดเสียง) ผ่านคนขับรถซึ่งทำหน้าที่เป็นตัวกลาง ในความเป็นจริง OpenGL และ DirectX เป็นส่วนหนึ่งของอินเทอร์เฟซ การเขียนโปรแกรมแอปพลิเคชันกับ ชุดอุปกรณ์ที่จำเป็นไลบรารี คลาส คำจำกัดความ โครงสร้าง ค่าคงที่ และฟังก์ชันที่ใช้เพื่อให้แน่ใจว่าสามารถทำงานร่วมกับผลิตภัณฑ์ซอฟต์แวร์ภายนอกที่ติดตั้งอยู่ ระบบปฏิบัติการ.

เทคโนโลยีเหล่านี้ใช้ทำอะไร?

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

ใน เกมสมัยใหม่ด้วยพื้นผิวที่ซับซ้อนและฉากไดนามิกที่วาดอย่างพิถีพิถัน การสนับสนุนดังกล่าวจึงมีความจำเป็นอย่างยิ่ง แต่ปัญหาก็คือตัวเร่งความเร็วกราฟิกบางตัวไม่สามารถใช้การสนับสนุนดังกล่าวได้อย่างถูกต้อง ในกรณีนี้ทุกอย่างขึ้นอยู่กับไดรเวอร์ ไม่ว่าการ์ดจะทันสมัยแค่ไหน แต่ด้วยซอฟต์แวร์ควบคุม (ไดรเวอร์) ที่ล้าสมัยจะทำให้ไม่สามารถใช้ความสามารถทั้งหมดที่ผู้ผลิตประกาศไว้ในตอนแรกได้ อย่างไรก็ตามในเกมส่วนใหญ่หรือในโปรแกรมสำหรับการทำงานกับมัลติมีเดีย (เช่นสำหรับการประมวลผลวิดีโอ) มักจำเป็นต้องเลือกว่าจะติดตั้งการสนับสนุนใดในการตั้งค่าโดยเปรียบเทียบแพลตฟอร์มหนึ่งกับอีกแพลตฟอร์มหนึ่ง (ในเวอร์ชันภาษาอังกฤษมักจะมีลักษณะดังนี้ “OpenGL กับ DirectX”)

ความแตกต่างหลักระหว่าง DirectX และ OpenGL

ส่วนข้อแตกต่างหลักๆ โดยไม่ต้องเข้าเรื่อง ด้านเทคนิคการทำงานสามารถสังเกตได้ทันทีว่าแพลตฟอร์ม DirectX ซึ่งเป็นการพัฒนาโดยเอกสิทธิ์ของ Microsoft Corporation นั้นมีไว้สำหรับใช้บนระบบ Windows และบางส่วนบน Xbox เท่านั้นและ OpenGL เป็นเทคโนโลยีข้ามแพลตฟอร์มที่เผยแพร่อย่างอิสระซึ่งใช้ได้กับระบบปฏิบัติการอื่น ( แม้กระทั่งมือถือ) ใบอนุญาต GNUอนุญาตให้ใครก็ตามมีส่วนร่วมในส่วนประกอบของ API นี้ การเปลี่ยนแปลงของตัวเองและการเพิ่มเติมที่เกี่ยวข้องกับการปรับปรุงเพื่อเพิ่มประสิทธิภาพให้กับการ์ดแสดงผลเดียวกัน ในขณะที่การปรับปรุง DirectX สามารถคาดหวังได้เมื่อมีการเปิดตัวแพลตฟอร์มเวอร์ชันใหม่เท่านั้น ในขณะเดียวกัน แม้ว่าจะใช้ไดรเวอร์ใหม่ล่าสุด เมื่อใช้กับบริดจ์เวอร์ชันเก่า ตัวเร่งกราฟิกจะไม่สร้างตัวบ่งชี้ที่ผู้ผลิตประกาศไว้

ข้อดีและข้อเสียหลัก

เมื่อพูดถึงสิ่งที่ดีกว่า - OpenGL หรือ DirectX 11 (12) เป็นที่น่าสังเกตว่าแพลตฟอร์มแรกมีไว้สำหรับกราฟิกเท่านั้นและแพลตฟอร์มที่สองสามารถใช้โดยทั่วไปสำหรับทุกสิ่งที่เกี่ยวข้องกับมัลติมีเดีย (สำหรับกราฟิกใน ในกรณีนี้ส่วนประกอบ Direct3D เป็นผู้รับผิดชอบ)

นอกจากนี้ผู้เชี่ยวชาญหลายคนยังตั้งข้อสังเกตว่าในมาก ระดับสูงทางเลือกที่สนับสนุนสะพานหนึ่งหรืออีกสะพานหนึ่งอาจขึ้นอยู่กับประเภทด้วย กราฟิกการ์ด- แต่ถ้าเราเข้าใกล้การเปรียบเทียบด้วยใจที่เปิดกว้าง เชื่อกันว่าในแง่ของการครอบคลุมแพลตฟอร์ม OpenGL ดูดีกว่า แต่ DirectX ชนะในแง่ของการเป็นผลิตภัณฑ์ซอฟต์แวร์สำเร็จรูปของคลาส Plug&Play อย่างไรก็ตามเราไม่ควรลืมว่าชุดเครื่องมือ ไดเร็คเอ็กซ์ล่าสุดเวอร์ชันต่างๆ มีอยู่แล้วใน OpenGL แต่ การสนับสนุนข้อเสนอแนะเลขที่

OpenGL หรือ DirectX: ไหนดีกว่าสำหรับเกม?

สำหรับเกม แม้แต่ที่นี่ก็ยังไม่สามารถให้คำตอบที่ชัดเจนได้ ตัวอย่างเช่น บ่อยครั้งคุณจะพบความคิดเห็นเกี่ยวกับข้อเท็จจริงนั้น ชิปกราฟิก Radeon 9800 ไลน์ ผลลัพธ์ที่ดีที่สุดในการทดสอบที่แสดงตาม DirectX และ การ์ดจอ GeForceซีรี่ส์ 5XXX - เมื่อใช้ OpenGL แต่ DirectX มีอีกอย่างหนึ่ง ข้อได้เปรียบที่ไม่อาจปฏิเสธได้.

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

มันยังเกิดขึ้นในทางกลับกัน ตัวอย่างเช่น ผู้ใช้บางคนสังเกตว่า DOOM 3 บนการ์ดซีรีย์ Radeon X1XXX ด้วย โดยใช้ OpenGLมันแค่ "บิน" และ Half-Life 2 "ช้าลง" บ่อยมาก แต่ที่นี่เห็นได้ชัดว่าทุกอย่างขึ้นอยู่กับไดรเวอร์ด้วย

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

ไหนดีกว่าสำหรับ BlueStacks: DirectX หรือ OpenGL

บ่อยครั้งที่คุณอาจเจอคำถามเกี่ยวกับการใช้หนึ่งในโปรแกรมจำลองระบบ Android ที่ได้รับความนิยมมากที่สุดที่เรียกว่า BlueStacks แพลตฟอร์มใดที่คุณชอบใน BlueStacks - OpenGL หรือ DirectX? อนิจจาก็เป็นไปไม่ได้ที่จะให้คำตอบที่ชัดเจนที่นี่เช่นกัน

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

สุดท้ายนี้ หากเราพูดถึงสิ่งที่ดีกว่า - OpenGL หรือ DirectX - สำหรับนักพัฒนาที่เพิ่งเริ่มเชี่ยวชาญเทคโนโลยีเหล่านี้และกำลังทำตามขั้นตอนแรก ผู้เชี่ยวชาญส่วนใหญ่ในสาขานี้ทราบว่าควรทำความคุ้นเคยกับหลักการทำงานก่อนจะดีกว่า และชุดเครื่องมือของ DirectX เนื่องจากแพลตฟอร์มนี้ดูง่ายกว่าสำหรับผู้เริ่มต้นและมีการเปิดตัวชุด SDK ที่ดีอย่างต่อเนื่องซึ่งออกแบบมาเพื่อทำให้การปรับตัวง่ายขึ้น ผลิตภัณฑ์ซอฟต์แวร์ไปที่ฮาร์ดแวร์ จากนั้นจึงค่อยศึกษา OpenGL ต่อไป

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

ข้อสรุปโดยย่อ

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

เห็นได้ชัดว่าผู้ใช้จำนวนมากโดยเฉพาะอย่างยิ่งผู้ที่ต้องการใช้คอมพิวเตอร์ในการติดตั้งและเล่นเกมที่ใช้ทรัพยากรจำนวนมากรู้ว่าในการตั้งค่ากราฟิกคุณสามารถใช้เครื่องมือพิเศษเพื่อเพิ่มความเร็วในการส่งออกภาพและปรับปรุงคุณภาพของภาพ OpenGL หรือ DirectX วิธีที่ดีที่สุดในการใช้ทรัพยากรที่ซ่อนอยู่ทั้งหมดของระบบคอมพิวเตอร์และบรรลุประสิทธิภาพสูงสุดคืออะไร? คำถามนี้ค่อนข้างขัดแย้ง และมักจะเป็นไปไม่ได้ที่จะตอบอย่างแน่ชัดเพื่อสนับสนุนแพลตฟอร์มใดแพลตฟอร์มหนึ่ง เนื่องจากทุกอย่างขึ้นอยู่กับเป้าหมายเฉพาะที่ผู้ใช้หรือนักพัฒนาตั้งไว้สำหรับตัวเอง เช่นเดียวกับแต่ละสถานการณ์เฉพาะ ซึ่งอาจบางส่วน เกี่ยวข้องกับ " ฮาร์ดแวร์ในรูปแบบของตัวเร่งกราฟิก การสนับสนุนซอฟต์แวร์ในรูปแบบของไดรเวอร์ และแง่มุมเพิ่มเติมบางประการ ลองคิดดูว่าอันไหนดีกว่ากัน - OpenGL หรือ DirectX - โดยหันไปหาแหล่งข้อมูลอย่างเป็นทางการและอาศัยความคิดเห็นของผู้ใช้และนักพัฒนาซอฟต์แวร์ที่อาจต้องการการสนับสนุนสำหรับเทคโนโลยีดังกล่าว

OpenGL และ DirectX คืออะไร

เริ่มต้นด้วยความจริงที่ว่าในหมู่ผู้ใช้ทั่วไปมีความเข้าใจผิดว่าส่วนประกอบทั้งสองที่อธิบายไว้นี้เป็นเอ็นจิ้นกราฟิก นี่คือคำถามที่ไม่ถูกต้องเกิดขึ้นเกี่ยวกับเอ็นจิ้นไหนดีกว่า - OpenGL หรือ DirectX

ความจริงก็คือแพลตฟอร์มเหล่านี้เกี่ยวข้องกับเอ็นจิ้นเหล่านี้เพียงบางส่วนเท่านั้น เนื่องจากเป็นซอฟต์แวร์เฉพาะที่ช่วยให้เอ็นจิ้นซอฟต์แวร์ของโปรแกรม (เกม) สามารถโต้ตอบกับอุปกรณ์ที่ติดตั้ง (ส่วนใหญ่มักเป็นการ์ดวิดีโอและเสียง) ผ่านไดรเวอร์ ซึ่ง ทำหน้าที่เป็นตัวกลาง ในความเป็นจริง OpenGL และ DirectX เป็นส่วนหนึ่งของอินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชันที่มีชุดไลบรารี คลาส คำจำกัดความ โครงสร้าง ค่าคงที่ และฟังก์ชันที่จำเป็นเพื่อให้แน่ใจว่าสามารถทำงานร่วมกับผลิตภัณฑ์ซอฟต์แวร์ภายนอกที่ติดตั้งในระบบปฏิบัติการได้

เทคโนโลยีเหล่านี้ใช้ทำอะไร?

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

ในเกมสมัยใหม่ที่มีพื้นผิวที่ซับซ้อนและฉากไดนามิกที่วาดอย่างพิถีพิถัน การสนับสนุนดังกล่าวมีความจำเป็นอย่างยิ่ง แต่ปัญหาก็คือตัวเร่งความเร็วกราฟิกบางตัวไม่สามารถใช้การสนับสนุนดังกล่าวได้อย่างถูกต้อง ในกรณีนี้ทุกอย่างขึ้นอยู่กับไดรเวอร์ ไม่ว่าการ์ดจะทันสมัยแค่ไหน แต่ด้วยซอฟต์แวร์ควบคุม (ไดรเวอร์) ที่ล้าสมัยจะทำให้ไม่สามารถใช้ความสามารถทั้งหมดที่ผู้ผลิตประกาศไว้ในตอนแรกได้ อย่างไรก็ตามในเกมส่วนใหญ่หรือในโปรแกรมสำหรับการทำงานกับมัลติมีเดีย (เช่นสำหรับการประมวลผลวิดีโอ) มักจำเป็นต้องเลือกว่าจะติดตั้งการสนับสนุนใดในการตั้งค่าโดยเปรียบเทียบแพลตฟอร์มหนึ่งกับอีกแพลตฟอร์มหนึ่ง (ในเวอร์ชันภาษาอังกฤษมักจะมีลักษณะดังนี้ “OpenGL กับ DirectX”)

ความแตกต่างหลักระหว่าง DirectX และ OpenGL

สำหรับความแตกต่างที่สำคัญ โดยไม่ต้องคำนึงถึงด้านเทคนิคของการดำเนินงาน เราสามารถสังเกตได้ทันทีว่าแพลตฟอร์ม DirectX ซึ่งเป็นการพัฒนาพิเศษของ Microsoft Corporation นั้นมีไว้สำหรับใช้บนระบบ Windows และบางส่วนบน Xbox เท่านั้น และ OpenGL เป็น เทคโนโลยีข้ามแพลตฟอร์มที่เผยแพร่อย่างอิสระซึ่งใช้ได้กับระบบปฏิบัติการอื่น (แม้แต่มือถือ) ใบอนุญาต GNU อนุญาตให้ใครก็ตามมีส่วนร่วมในส่วนประกอบของสิ่งนี้ API เป็นเจ้าของการเปลี่ยนแปลงและการเพิ่มเติมที่เกี่ยวข้องกับการปรับปรุงเพื่อเพิ่มประสิทธิภาพให้กับการ์ดแสดงผลเดียวกัน ในขณะที่การปรับปรุง DirectX สามารถคาดหวังได้เมื่อมีการเปิดตัวแพลตฟอร์มเวอร์ชันใหม่เท่านั้น ในขณะเดียวกัน แม้ว่าจะใช้ไดรเวอร์ใหม่ล่าสุด แต่เมื่อใช้กับบริดจ์เวอร์ชันเก่า ตัวเร่งกราฟิกจะไม่สร้างตัวบ่งชี้ที่ผู้ผลิตประกาศไว้

ข้อดีและข้อเสียหลัก

เมื่อพูดถึงสิ่งที่ดีกว่า - OpenGL หรือ DirectX 11 (12) เป็นที่น่าสังเกตว่าแพลตฟอร์มแรกมีไว้สำหรับกราฟิกเท่านั้นและแพลตฟอร์มที่สองสามารถใช้ได้โดยทั่วไปสำหรับทุกสิ่งที่เกี่ยวข้องกับมัลติมีเดีย (ส่วนประกอบ Direct3D รับผิดชอบด้านกราฟิกใน กรณีนี้)

นอกจากนี้ผู้เชี่ยวชาญหลายคนตั้งข้อสังเกตว่าในระดับที่สูงมากการเลือกใช้บริดจ์ตัวใดตัวหนึ่งอาจขึ้นอยู่กับประเภทของการ์ดแสดงผล แต่ถ้าเราเข้าใกล้การเปรียบเทียบด้วยใจที่เปิดกว้าง เชื่อกันว่าในแง่ของการครอบคลุมแพลตฟอร์ม OpenGL ดูดีกว่า แต่ DirectX ชนะในแง่ของการเป็นผลิตภัณฑ์ซอฟต์แวร์สำเร็จรูปของคลาส Plug&Play อย่างไรก็ตาม เราไม่ควรลืมว่าชุดเครื่องมือ DirectX เวอร์ชันล่าสุดมีอยู่แล้วใน OpenGL แต่ไม่มีการรองรับแบบย้อนกลับ

OpenGL หรือ DirectX: ไหนดีกว่าสำหรับเกม?

สำหรับเกม แม้แต่ที่นี่ก็ยังไม่สามารถให้คำตอบที่ชัดเจนได้ ตัวอย่างเช่น บ่อยครั้งที่คุณอาจพบความคิดเห็นเกี่ยวกับข้อเท็จจริงที่ว่าชิปกราฟิกในกลุ่มผลิตภัณฑ์ Radeon 9800 แสดงผลลัพธ์ที่ดีที่สุดในการทดสอบตาม DirectX และการ์ดซีรีส์ GeForce 5XXX แสดงผลลัพธ์ที่ดีที่สุดเมื่อใช้ OpenGL แต่ DirectX มีข้อได้เปรียบที่ไม่อาจปฏิเสธได้อีกประการหนึ่ง

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

มันยังเกิดขึ้นในทางกลับกัน ตัวอย่างเช่น ผู้ใช้บางคนสังเกตว่า DOOM 3 บนการ์ดซีรีส์ Radeon X1XXX ที่ใช้ OpenGL เป็นเพียง "แมลงวัน" และ Half-Life 2 มักจะ "ช้าลง" แต่ที่นี่เห็นได้ชัดว่าทุกอย่างขึ้นอยู่กับไดรเวอร์ด้วย

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

ไหนดีกว่าสำหรับ BlueStacks: DirectX หรือ OpenGL

บ่อยครั้งที่คุณอาจเจอคำถามเกี่ยวกับการใช้หนึ่งในโปรแกรมจำลองระบบ Android ที่ได้รับความนิยมมากที่สุดที่เรียกว่า BlueStacks แพลตฟอร์มใดที่คุณชอบใน BlueStacks - OpenGL หรือ DirectX? อนิจจาก็เป็นไปไม่ได้ที่จะให้คำตอบที่ชัดเจนที่นี่เช่นกัน

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

สุดท้ายนี้ หากเราพูดถึงสิ่งที่ดีกว่า - OpenGL หรือ DirectX - สำหรับนักพัฒนาที่เพิ่งเริ่มเชี่ยวชาญเทคโนโลยีเหล่านี้และกำลังทำตามขั้นตอนแรก ผู้เชี่ยวชาญส่วนใหญ่ในสาขานี้ทราบว่าควรทำความคุ้นเคยกับหลักการทำงานก่อนจะดีกว่า และชุดเครื่องมือของ DirectX เนื่องจากแพลตฟอร์มนี้ดูง่ายกว่าสำหรับผู้เริ่มต้นและมีการเปิดตัวชุด SDK ที่ดีอย่างต่อเนื่องซึ่งได้รับการออกแบบมาอย่างแม่นยำเพื่อลดความซับซ้อนในการปรับผลิตภัณฑ์ซอฟต์แวร์ให้เข้ากับฮาร์ดแวร์จากนั้นจึงไปสู่การเรียนรู้ OpenGL เท่านั้น

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

ข้อสรุปโดยย่อ

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

มักจะมีความเข้าใจผิดหลายประการเกี่ยวกับ API ทั้งสองนี้

ฉันได้พยายามสรุปข้อเท็จจริงพื้นฐานที่ทั้งนักพัฒนาและผู้ใช้ปลายทางควรรู้ในบทความนี้

เนื่องจากหัวข้อมีความโฮลิวาร์มาก ฉันจึงพยายามรักษาโทนเสียงให้เป็นกลางที่สุดเท่าที่จะเป็นไปได้

มุมมองตานก

API ทั้งสองให้การเข้าถึงฟังก์ชันต่างๆ การเร่งความเร็วด้วยฮาร์ดแวร์กราฟิก 3 มิติ

ความเข้าใจผิดที่พบบ่อย

OpenGL ล้าหลัง Direct3D และโดยทั่วไปเมื่อพิจารณาจากการเปลี่ยนแปลงข้อกำหนดที่เชื่องช้าดังกล่าว ก็อาจจะตายไปแล้วโดยสิ้นเชิง

จริงๆ แล้ว สาเหตุของความเข้าใจผิดนี้คือความไม่รู้เกี่ยวกับส่วนขยาย โดยทั่วไปแล้ว OpenGL สามารถทำได้และบ่อยครั้ง ข้างหน้า(!) Direct3D ในแง่ของนวัตกรรม เพราะ... ผู้ผลิตสามารถเพิ่มส่วนขยายให้กับ OpenGL ได้โดยไม่ต้องรอใครเลย ในขณะที่ Microsoft เท่านั้นที่สามารถทำการเปลี่ยนแปลง Direct3D ได้

OpenGL มีไว้สำหรับโปรแกรมกราฟิกระดับมืออาชีพ และ Direct3D มีไว้สำหรับเกม

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

Microsoft จัดส่งมาพร้อมกับ ไดรเวอร์ Windowsโดยไม่ต้องรองรับ OpenGL OpenGL จะเรนเดอร์โดยไม่เร่งความเร็วหรือจำลองผ่าน DirectX ดังนั้น หากคุณต้องการการสนับสนุน OpenGL บน Windows คุณจะต้องติดตั้งไดรเวอร์จากเว็บไซต์ของผู้ผลิต สาเหตุของการปฏิเสธ OpenGL นี้น่าจะเกิดจากการเมืองล้วนๆ อีกครั้ง

แล้วจะทำยังไง จะใช้ชีวิตยังไง?

หมายเหตุ: ส่วนนี้เป็นส่วนตัวมาก

หากคุณเป็นนักพัฒนาและกำลังตัดสินใจว่าจะใช้ API ใด ให้พิจารณาสิ่งต่อไปนี้:
สำหรับ OpenGL - ข้ามแพลตฟอร์มขนาดใหญ่โดยเฉพาะอย่างยิ่งความพร้อมใช้งานของฟังก์ชันใหม่ทั้งหมดบน Windows XP โดยที่ Direct3D 10/11 ไม่มีอยู่และจะไม่มีอีกต่อไป
เทียบกับ OpenGL - ไดรเวอร์ใน Windows ไม่รองรับ OpenGL ดังนั้นคุณต้องติดตั้งจากเว็บไซต์ของผู้ผลิต

หากคุณยังใหม่ต่อการพัฒนาแอปพลิเคชัน 3D และต้องการเชี่ยวชาญด้านนี้ ฉันขอแนะนำให้ทำสิ่งนี้: ทำความเข้าใจ Direct3D ก่อน (เหตุผลนี้ง่ายมาก - Microsoft ให้ SDK คุณภาพสูงมาก) จากนั้นจึงทำความเข้าใจ OpenGL (สิ่งนี้ จะง่ายมากหลังจาก Direct3D) น่าเสียดายที่ไม่มี SDK สำหรับ OpenGL ดังนั้นจึงเป็นเรื่องยากมากขึ้นที่จะเชี่ยวชาญตั้งแต่เริ่มต้น

นั่นคือทั้งหมดที่ ขอให้โชคดีกับการพัฒนาของคุณ!

คุณถามว่าพวกเขาเป็นใคร? พวกเขาเป็นบริษัทที่ตายไปแล้วซึ่งฉันถือว่าเป็นนักฆ่า OpenGL ตัวจริง แน่นอนว่าความโง่เขลาโดยรวมของคณะกรรมการทำให้ OpenGL มีความเสี่ยงเมื่อควรจะฉีก D3D ออกเป็นชิ้นเล็กชิ้นน้อย แต่ในความคิดของฉัน 3D Labs อาจเป็นเพียงเหตุผลเดียวเท่านั้น สถานการณ์ปัจจุบัน OpenGL ในตลาด พวกเขาทำอะไรเพื่อสิ่งนี้?

พวกเขาพัฒนาภาษาเชเดอร์สำหรับ OpenGL

3D Labs เป็นบริษัทที่กำลังจะตาย GPU ราคาแพงของพวกเขาถูกขับออกจากตลาดเวิร์คสเตชั่นโดยการเพิ่มแรงกดดันจาก Nvidia และแตกต่างจาก nVidia ตรงที่ 3D Labs ไม่มีตัวตนในตลาดผู้บริโภค ชัยชนะของ nVidia อาจหมายถึงความตายของ 3D Labs

ซึ่งเป็นสิ่งที่เกิดขึ้นในที่สุด

ด้วยความพยายามที่จะอยู่ในโลกที่ไม่ต้องการผลิตภัณฑ์ของตน 3D Labs จึงปรากฏตัวที่ Game Developer Conference พร้อมการนำเสนอสิ่งที่พวกเขาเรียกว่า "OpenGL 2.0" มันเป็น OpenGL API ที่เขียนใหม่ตั้งแต่ต้น และนี่ก็สมเหตุสมผลเพราะในสมัยนั้น OpenGL APIมันเต็มไปด้วยขยะ (ซึ่งยังคงอยู่มาจนถึงทุกวันนี้) เพียงแค่ดูว่าการโหลดและการผูกพื้นผิวนั้นลึกลับเพียงใด

ส่วนหนึ่งของข้อเสนอของพวกเขาคือภาษาเชเดอร์ ใช่แล้วนั่นแหละ อย่างไรก็ตาม ไม่เหมือนกับส่วนขยายข้ามแพลตฟอร์มที่มีอยู่ ภาษาเชเดอร์ของพวกเขาคือ "ระดับสูง" (C คือ ระดับสูงสำหรับภาษาเชเดอร์)

ในเวลาเดียวกัน Microsoft กำลังทำงานเกี่ยวกับภาษาเชเดอร์ของตัวเอง ซึ่งพวกเขาใช้จินตนาการร่วมกันทั้งหมด เรียกว่า... High Level Shader Language (HLSL) แต่วิธีการใช้ภาษาของพวกเขาแตกต่างกันโดยพื้นฐาน

ปัญหาที่ใหญ่ที่สุดของภาษา 3D Labs คือสามารถฝังได้ Microsoft กำหนดภาษาของตนอย่างเป็นอิสระโดยสิ้นเชิง พวกเขาได้เปิดตัวคอมไพเลอร์ที่สร้างโค้ดแอสเซมบลีสำหรับเชเดอร์ SM 2.0 (หรือสูงกว่า) ซึ่งสามารถป้อนไปยัง D3D ได้ ในช่วงเวลาของ D3D v9 นั้น HLSL ไม่เคยสัมผัส D3D โดยตรง มันเป็นนามธรรมที่ดีแต่ไม่จำเป็น นักพัฒนาซอฟต์แวร์มีโอกาสที่จะนำท่อไอเสียของคอมไพเลอร์มาปรับแต่งเพื่อให้ได้ประสิทธิภาพสูงสุดเสมอ

ในภาษาจาก 3D Labs ไม่มีอะไรนี่ไม่ใช่กรณี คุณให้ภาษาที่เหมือน C แก่คนขับ และสร้างเชเดอร์ขึ้นมา นั่นคือทั้งหมดที่ ไม่มีเชเดอร์แอสเซมบลี ไม่มีอะไรที่สามารถป้อนให้กับสิ่งอื่นได้ เฉพาะวัตถุ OpenGL ที่แสดงถึงเชเดอร์

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

นี่เป็นปัญหาใหญ่ แต่ไม่ใช่ข้อเสียเปรียบเพียงอย่างเดียวของ GLSL ไกลไม่ใช่คนเดียว

ใน D3D เช่นเดียวกับในภาษาแอสเซมบลี OpenGL แบบเก่า คุณสามารถผสมและจับคู่จุดยอดและเชเดอร์ส่วนในทุกวิถีทางที่เป็นไปได้ คุณสามารถใช้ Vertex Shader ร่วมกับ Fragment Shader ที่รองรับได้ ตราบใดที่พวกมันสื่อสารผ่านอินเทอร์เฟซเดียวกัน ยิ่งไปกว่านั้น ยังอนุญาตให้มีความไม่เข้ากันบางประการได้ ตัวอย่างเช่น ตัวเชเดอร์จุดยอดสามารถส่งออกค่าที่ไม่ได้ใช้โดยตัวเชเดอร์แฟรกเมนต์

ไม่มีอะไรแบบนั้นใน GLSL จุดยอดและเชเดอร์ส่วนถูกหลอมรวมเข้าด้วยกันเพื่อสร้างสิ่งที่ 3D Labs เรียกว่า "วัตถุซอฟต์แวร์" ดังนั้นเพื่อ การแบ่งปันหลายจุดยอดและเชเดอร์ส่วนใน การรวมกันต่างๆฉันต้องสร้างวัตถุซอฟต์แวร์หลายรายการ สิ่งนี้ทำให้เกิดปัญหาใหญ่เป็นอันดับสอง

3D Labs คิดว่าพวกเขาฉลาดที่สุด พวกเขาใช้ C/C++ เป็นพื้นฐานสำหรับโมเดลการคอมไพล์ GLSL นี่คือเมื่อคุณนำไฟล์ c หนึ่งไฟล์มาคอมไพล์เป็นไฟล์อ็อบเจ็กต์ จากนั้นนำไฟล์อ็อบเจ็กต์หลายไฟล์มาเชื่อมโยงเข้ากับโปรแกรม นี่คือวิธีที่ GLSL คอมไพล์: ขั้นแรกให้คุณคอมไพล์จุดสุดยอดหรือส่วนเชเดอร์ลงในวัตถุเชเดอร์ จากนั้นคุณใส่วัตถุเหล่านั้นลงใน วัตถุซอฟต์แวร์และนำมารวมกันเป็นโปรแกรมในที่สุด

ตามทฤษฎีแล้ว สิ่งนี้อนุญาตให้มีสิ่งดีๆ เช่นเชเดอร์ "ไลบรารี" ซึ่งมีโค้ดที่เรียกโดยเชเดอร์หลัก ในทางปฏิบัติ สิ่งนี้ส่งผลให้ไม่สามารถรวบรวมเชเดอร์ได้ สองครั้ง: หนึ่งครั้งในขั้นตอนการคอมไพล์และครั้งที่สองในขั้นตอนการเชื่อมโยง โดยเฉพาะอย่างยิ่งคอมไพเลอร์จาก nVidia มีชื่อเสียงในเรื่องนี้ มันไม่ได้สร้างโค้ดอ็อบเจ็กต์ระดับกลางใดๆ มันคอมไพล์ตอนเริ่มต้น โยนผลลัพธ์ทิ้งไป และคอมไพล์อีกครั้งที่ลิงค์สเตจ

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

GLSL ก็มีปัญหาอื่นๆ เช่นกัน อาจผิดที่จะกล่าวโทษ 3D Labs เนื่องจากในที่สุด ARB ก็อนุมัติและรวมภาษาเชเดอร์ไว้ใน OpenGL (แต่ไม่มีอะไรอื่นจากข้อเสนอของ 3DLabs) อย่างไรก็ตาม แนวคิดดั้งเดิมยังคงอยู่กับ 3D Labs

และตอนนี้สิ่งที่น่าเศร้าที่สุดก็คือ 3D Labs ถูกต้อง(ส่วนใหญ่). GLSL ไม่ใช่ภาษาเวกเตอร์เหมือน HLSL ในขณะนั้น เนื่องจากฮาร์ดแวร์ของ 3D Labs เป็นสเกลาร์ (เช่น ฮาร์ดแวร์ nVidia สมัยใหม่) และฮาร์ดแวร์เหล่านี้ถูกต้องตามทิศทางที่ผู้ผลิตฮาร์ดแวร์หลายรายปฏิบัติตามในภายหลัง

พวกเขาพูดถูกเกี่ยวกับการเลือกโมเดลการคอมไพล์สำหรับภาษา "ระดับสูง" แม้แต่ D3D ก็มาถึงจุดนี้ในที่สุด

ปัญหาคือ 3D Labs คิดถูกเกี่ยวกับผิด เวลา- และในการพยายามไปสู่อนาคตก่อนเวลาอันควร ในการพยายามเตรียมพร้อมสำหรับอนาคต พวกเขาละทิ้งปัจจุบัน ดูเหมือนว่าฟังก์ชัน T&L ใน OpenGL จะมีอยู่เสมอ ยกเว้นไปป์ไลน์ OpenGL T&L มีประโยชน์และก่อนที่จะมีฮาร์ดแวร์ T&L และ GLSL จะต้องรับผิดก่อนที่ส่วนที่เหลือของโลกจะตามทัน

GLSL คือ ภาษาที่ดี ตอนนี้- แต่เกิดอะไรขึ้นในตอนนั้น? เขาแย่มาก และ OpenGL ก็ประสบปัญหานี้

บนเส้นทางสู่การถวายพระพร

ฉันสนับสนุนมุมมองที่ว่า 3D Labs จัดการกับ OpenGL อย่างร้ายแรง แต่ ARB เองก็ตอกตะปูสุดท้ายเข้าไปในโลงศพ

คุณอาจเคยได้ยินเรื่องราวนี้ ในช่วงเวลาของ OpenGL 2.1 นั้น OpenGL มี ปัญหาใหญ่- เขากำลังลากไปตาม ใหญ่โหลดความเข้ากันได้ API ใช้งานไม่ได้ง่ายอีกต่อไป สิ่งหนึ่งที่สามารถทำได้ด้วยห้า ในรูปแบบที่แตกต่างกันและยังไม่ชัดเจนว่าอันไหนเร็วกว่า เป็นไปได้ที่จะ "เรียนรู้" OpenGL ด้วย คำแนะนำง่ายๆแต่คุณยังไม่ได้ศึกษา OpenGL ซึ่งให้พลังกราฟิกและประสิทธิภาพที่แท้จริง

ARB ตัดสินใจที่จะพยายามสร้าง OpenGL ใหม่อีกครั้ง มันเหมือนกับ "OpenGL 2.0" จาก 3D Labs แต่ดีกว่าเพราะ ARB อยู่เบื้องหลังความพยายาม พวกเขาเรียกมันว่า "Longs Peak"

มีอะไรเลวร้ายเกี่ยวกับการใช้เวลาเพียงเล็กน้อยในการปรับปรุง API ข่าวร้ายก็คือ Microsoft อยู่ในสถานะที่ค่อนข้างล่อแหลม นี่คือช่วงเวลาแห่งการเปลี่ยนไปใช้ Vista

ใน วิสต้า ไมโครซอฟต์ตัดสินใจทำการเปลี่ยนแปลงที่รอคอยมานาน ไดรเวอร์กราฟิก- พวกเขาบังคับให้ไดรเวอร์หันไปใช้ระบบปฏิบัติการสำหรับการจำลองเสมือน หน่วยความจำกราฟิกและอื่น ๆ อีกมากมาย

เราสามารถถกเถียงกันเป็นเวลานานเกี่ยวกับข้อดีของแนวทางนี้และไม่ว่าจะเป็นไปได้หรือไม่ แต่ความจริงก็ยังคงอยู่: Microsoft สร้าง D3D 10 สำหรับ Vista และสูงกว่าเท่านั้น แม้กระทั่งบน สนับสนุนเป็นไปไม่ได้ที่ฮาร์ดแวร์ D3D จะเรียกใช้แอปพลิเคชัน D3D โดยไม่มี Vista

คุณอาจจำได้ว่า Vista... เอาเป็นว่ามันไม่ได้ผลดีนัก ดังนั้นเราจึงมีระบบปฏิบัติการที่ไม่เร่งรีบ API ใหม่ซึ่งใช้งานได้กับระบบปฏิบัติการนี้เท่านั้นและฮาร์ดแวร์รุ่นใหม่ซึ่ง จำเป็นใน API และ OS นี้จะทำมากกว่าแค่มีประสิทธิภาพเหนือกว่ารุ่นก่อนหน้า

อย่างไรก็ตามผู้พัฒนา สามารถใช้ฟังก์ชันระดับ D3D 10 ผ่าน OpenGL นั่นคือ สามารถทำได้หาก ARB ไม่ยุ่งอยู่กับการทำงานกับ Long Peaks

ARB ใช้เวลาหนึ่งปีครึ่งถึงสองปีที่ดีในการปรับปรุง API เมื่อ OpenGL 3.0 ออกมา การเปลี่ยนไปใช้ Vista ก็สิ้นสุดลง Windows 7 ก็มาถึงแล้ว และนักพัฒนาเกมก็ไม่สนใจเกี่ยวกับฟังก์ชันการทำงานระดับ 10 ของ D3D อีกต่อไป ความเร็วของพอร์ตพีซีเพิ่มขึ้น คอนโซล (หรือเมื่อนักพัฒนาพีซีเปลี่ยนไปสู่ตลาดคอนโซล) นักพัฒนาต้องการฟังก์ชัน D3D 10 น้อยลง

หากนักพัฒนาสามารถเข้าถึงฟังก์ชันการทำงานนี้ได้แม้บน Windows XP การพัฒนา OpenGL ก็สามารถเติมพลังได้ แต่ ARB พลาดโอกาสนี้ คุณต้องการที่จะรู้ว่าสิ่งที่เลวร้ายที่สุดคืออะไร?

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

ส่งผลให้ ARB ไม่เพียงแต่พลาดเท่านั้น สำคัญโอกาสแต่ก็ไม่ได้ทำงานที่ทำให้พวกเขาละเลยสิ่งนี้ มันเป็นความล้มเหลวครั้งใหญ่ในทุกด้าน

นี่คือเรื่องราวของ การต่อต้าน OpenGLและไดเร็กต์3ดี เรื่องราวของโอกาสที่พลาดไป ความโง่เขลาครั้งใหญ่ ความประมาทโดยเจตนา และความไร้สาระซ้ำซาก

โอ้ ถ้าเพียงแต่ OpenGL จะง่ายมาก ไม่ทางใดก็ทางหนึ่งมี 6 มาตรฐานที่ใช้งานร่วมกันไม่ได้ (2.1,3.3,4.x, ES 1.0, ES 2.0, ES 3.0) ซึ่งมีภาษาเชเดอร์ที่แตกต่างกันและ API ที่แตกต่างกันบางส่วน (และบางครั้งก็เกือบทั้งหมด) . เลวร้ายยิ่งกว่านั้นไม่มีการดำเนินการอ้างอิงและการควบคุมคุณภาพน้อยมาก เป็นผลให้ในตลาดพีซีส่วนใหญ่ (Intel และ AMD) OpenGL ได้รับการติดตั้งอย่างคดโกงและบนโทรศัพท์มือถือนอกเหนือจากไดรเวอร์ที่คดโกงบ่อยครั้ง (สำหรับ Adreno (เช่น ATI คุณต้องการอะไร) แนวทางในการเพิ่มประสิทธิภาพคือ แตกต่างกันมาก

ดีดี

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

เครดิต

Didi คุณพูดอะไรแปลก ๆ ก่อนอื่น D3D9 มีอยู่ทุกที่โดยเริ่มจาก XP และเซอร์ไพรส์บน XBox และ Windows บางรุ่น โทรศัพท์มือถือ- D3D11 ใช้งานได้บนพีซีทุกเครื่องที่ใช้ Vista+, WinRT, WP8 เห็นได้ชัดว่ามันจะเป็นใน XBox รุ่นต่อไป

OpenGL ทำงานได้แย่มากบนพีซี มีโอกาสน้อยมากที่ทุกอย่างจะทำงานบน AMD ฉันจะไม่พูดอะไรเกี่ยวกับ Intel เลย ผู้ใช้โดยเฉพาะหมูอาจไม่มีไดรเวอร์ซึ่งจะทำให้เขาสามารถเรนเดอร์ซอฟต์แวร์ที่ยอดเยี่ยมและรองรับ API 1.1 ได้ ในขณะเดียวกันก็มีโอกาสที่ดีที่เกม D3D จะทำงานได้ดี

ดีดี

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

เครดิต

ฉันแค่มีมัน และบน OpenGL ES ฉันไม่เข้าใจเรื่องตลกเกี่ยวกับค่าแรงเลย การตรวจสอบสถานะของไปป์ไลน์บน OpenGL ยังคงทรมานอยู่เพราะด้วยเหตุผลบางประการ ส่วนสำคัญของมันถูกห่อหุ้มด้วยกราฟิก "ดั้งเดิม" โดยทั่วไปการเก็บโค้ดแบบพกพานั้นเป็นเรื่องยาก ES 1 ไม่มีข้อกำหนดสำหรับรูปแบบการบีบอัดพื้นผิวฮาร์ดแวร์เลย ES 2.0 มี ETC ที่ไม่ดี ด้วยเหตุนี้ สำหรับ Android รุ่นเดียวกัน คุณจะต้องรวบรวมชุดโครงสร้างที่มีพื้นผิวอยู่ด้วย รูปแบบที่แตกต่างกัน- ฉันไม่ได้พูดถึงความจริงที่ว่า PowerVR และ Mali และ Adreno ในบางสถานที่มีแนวทางที่ตรงกันข้ามโดยตรงกับการปรับให้เหมาะสมในระดับ OpenGL (ด้วยแนวทางในการใช้ฮาร์ดแวร์ที่เป็นนามธรรม) ฉันไม่อยากพูดถึงพีซีด้วยซ้ำ เนื่องจาก OpenGL ต้องทำงาน คอมพิวเตอร์ของฉันจึงมีตัวเร่งความเร็ว nVidia อยู่เสมอ ฉันไม่มีทางเลือกจริงๆ ฉันเกือบจะรับประกันได้ว่าโค้ดที่เขียนตามมาตรฐานบน Intel GMA/HD จะไม่ทำงานโง่เขลา แม้ว่าฉันจะติดตั้งไดรเวอร์ 10 ตัวก็ตาม หรือมันจะทำงานในลักษณะที่มันจะดีกว่าถ้ามันไม่ได้ผลโดยสุจริต เกือบจะเป็นเรื่องเดียวกันกับ ATI/AMD สถานการณ์ดีขึ้นนิดหน่อย

โดยทั่วไปแล้ว ความคิดเห็นของคุณฟังดูเป็นจิตวิญญาณของนักพัฒนามือใหม่ที่ไม่มีเวลาผ่านการพัฒนาการผลิตแบบนรกบน OpenGL