DirectX นั้นง่ายกว่าหรือดีกว่า OpenGL แม้ว่า OpenGL จะเป็นแพลตฟอร์มข้ามหรือไม่ ทำไมเราไม่เห็นเกมที่ทรงพลังจริง ๆ สำหรับลีนุกซ์เหมือนใน Windows?
DirectX นั้นง่ายกว่าหรือดีกว่า OpenGL แม้ว่า OpenGL จะเป็นแพลตฟอร์มข้ามหรือไม่ ทำไมเราไม่เห็นเกมที่ทรงพลังจริง ๆ สำหรับลีนุกซ์เหมือนใน Windows?
คำตอบ:
คำตอบมากมายที่นี่ดีมากจริงๆ แต่ควรแก้ไขปัญหาOpenGLและDirect3D (D3D) และนั่นต้องมี ... บทเรียนประวัติศาสตร์
และก่อนที่เราจะเริ่มต้นผมรู้เพิ่มเติมเกี่ยวกับOpenGLกว่าที่ฉันจะทำอย่างไรกับDirect3D ฉันไม่เคยเขียนรหัส D3D ในชีวิตของฉันเลยและฉันได้เขียนบทช่วยสอนเกี่ยวกับ OpenGL ดังนั้นสิ่งที่ฉันจะพูดไม่ใช่เรื่องของอคติ มันเป็นเพียงเรื่องของประวัติศาสตร์
วันหนึ่งบางครั้งในช่วงต้นทศวรรษ 90 ไมโครซอฟท์ก็มองไปรอบ ๆ พวกเขาเห็นว่าSNESและSega Genesisนั้นยอดเยี่ยมเล่นเกมแอคชั่นมากมาย และพวกเขาเห็นDOS นักพัฒนาโค้ดเกม DOS เช่นเกมคอนโซล: ตรงไปที่โลหะ ซึ่งแตกต่างจากคอนโซลที่ผู้พัฒนาเกม SNES รู้ว่าผู้ใช้จะมีฮาร์ดแวร์อะไรนักพัฒนา DOS ต้องเขียนเพื่อกำหนดค่าที่เป็นไปได้หลายอย่าง และนี่ค่อนข้างยากกว่าที่คิด
และ Microsoft ก็มีปัญหาใหญ่กว่า: Windows ดู Windows ต้องการเป็นเจ้าของฮาร์ดแวร์ซึ่งแตกต่างจาก DOS ที่ให้นักพัฒนาทำอะไร การมีฮาร์ดแวร์เป็นสิ่งจำเป็นเพื่อให้เกิดความร่วมมือระหว่างแอปพลิเคชัน ความร่วมมือเป็นสิ่งที่ผู้พัฒนาเกมเกลียดเพราะใช้ทรัพยากรฮาร์ดแวร์ที่มีค่าซึ่งพวกเขาสามารถใช้เพื่อให้ยอดเยี่ยม
เพื่อส่งเสริมการพัฒนาเกมบน Windows, ไมโครซอฟท์จำเป็นต้องมี API เครื่องแบบที่เป็นระดับต่ำวิ่งบน Windows โดยไม่ต้องชะลอตัวลงโดยมันและที่สุดของทุกข้ามฮาร์ดแวร์ API เดียวสำหรับกราฟิกเสียงและฮาร์ดแวร์อินพุตทั้งหมด
ดังนั้นDirectXจึงเกิด
เครื่องเร่งความเร็ว 3 มิติเกิดในอีกไม่กี่เดือนต่อมา และ Microsoft ก็พบปัญหา ดู DirectDraw ซึ่งเป็นองค์ประกอบกราฟิกของ DirectX เท่านั้นที่จัดการกับกราฟิก 2D: การจัดสรรหน่วยความจำกราฟิกและการทำบิตบิตระหว่างส่วนต่างๆของหน่วยความจำที่จัดสรร
ดังนั้นไมโครซอฟท์จึงซื้อมิดเดิลแวร์สักเล็กน้อยแล้วนำไปทำเป็น Direct3D Version 3 มันเป็นคำสาปแช่งระดับสากล และด้วยเหตุผลที่ดี; การดูโค้ด D3D v3 เปรียบเสมือนการจ้องมองเข้าไปในหีบพันธสัญญา
Old John Carmack ที่ Id Software เอามาดูที่ถังขยะและพูดว่า "ขันนั่น!" และตัดสินใจเขียนไปยัง API อื่น: OpenGL
ดูอีกส่วนหนึ่งของสัตว์ร้ายที่ Microsoft กำลังยุ่งอยู่กับการทำงานกับ SGI ในการใช้งาน OpenGL สำหรับ Windows ความคิดที่นี่คือการพัฒนาศาลของแอปพลิเคชัน GL ทั่วไป: แอพเวิร์กสเตชัน เครื่องมือ CAD การสร้างแบบจำลองสิ่งนั้น เกมเป็นสิ่งที่ไกลที่สุดในใจ นี่คือสิ่งที่เป็น Windows NT เป็นหลัก แต่ Microsoft ตัดสินใจที่จะเพิ่มลงใน Win95 ด้วย
เป็นวิธีการดึงดูดนักพัฒนาเวิร์กสเตชันให้กับ Windows Microsoft ตัดสินใจที่จะลองติดสินบนพวกเขาด้วยการเข้าถึงการ์ดกราฟิก 3D แบบใหม่ที่มีขนาดใหญ่กว่านี้ Microsoft ใช้โปรโตคอล Installable Client Driver: ผู้ผลิตการ์ดกราฟิกสามารถแทนที่ซอฟต์แวร์ของ Microsoft ที่ใช้งาน OpenGL ด้วยฮาร์ดแวร์ที่ใช้ โค้ดสามารถใช้งานฮาร์ดแวร์ OpenGL ได้โดยอัตโนมัติหากมีอยู่
ในช่วงแรกผู้ใช้วิดีโอระดับผู้บริโภคไม่ได้รับการสนับสนุนสำหรับ OpenGL นั่นไม่ได้หยุด Carmack เพียงแค่ย้าย Quake ไปยัง OpenGL (GLQuake) บนเวิร์กสเตชัน SGI ของเขา ตามที่เราสามารถอ่านได้จาก GLQuake readme:
ในทางทฤษฎีจะเกิดแผ่นดินไหวขึ้นบน OpenGL ที่รองรับส่วนขยายวัตถุพื้นผิวใด ๆ เว้นแต่ว่าจะเป็นฮาร์ดแวร์ที่มีประสิทธิภาพมากที่เร่งทุกอย่างที่จำเป็นการเล่นเกมจะไม่เป็นที่ยอมรับ หากต้องผ่านเส้นทางการจำลองซอฟต์แวร์ใด ๆ ประสิทธิภาพจะอยู่ภายใต้หนึ่งเฟรมต่อวินาที
ในเวลานี้ (มีนาคม '97) ฮาร์ดแวร์ opengl มาตรฐานเดียวที่สามารถเล่นได้อย่างมีเหตุผลคือ realgm intergraph ซึ่งเป็นการ์ดราคาแพงมาก 3dlabs ได้รับการปรับปรุงประสิทธิภาพอย่างมีนัยสำคัญ แต่ด้วยไดรเวอร์ที่มีอยู่มันยังไม่ดีพอที่จะเล่น ไดร์เวอร์ 3dlabs ปัจจุบันบางตัวสำหรับบอร์ดแบบ glint และ permedia สามารถพัง NT เมื่อออกจากการทำงานแบบเต็มหน้าจอดังนั้นฉันจึงไม่แนะนำให้ใช้เกล็นไหวบนฮาร์ดแวร์ของ 3dlabs
3dfx ได้จัดให้มี opengl32.dll ซึ่งใช้ทุกสิ่งที่ต้องการแผ่นดินไหว แต่มันไม่ได้ใช้งานอย่างเต็มรูปแบบของ OpenGL แอปพลิเคชัน OpenGL อื่น ๆ นั้นไม่น่าใช้งานได้ดังนั้นให้พิจารณาโดยทั่วไปว่าเป็น "โปรแกรมควบคุมการเกิดแผ่นดินไหว"
นี่คือการเกิดของไดรเวอร์ miniGL สิ่งเหล่านี้พัฒนาไปสู่การใช้งาน OpenGL แบบเต็มรูปแบบในที่สุดเนื่องจากฮาร์ดแวร์มีประสิทธิภาพเพียงพอที่จะใช้งานฟังก์ชั่น OpenGL ส่วนใหญ่ในฮาร์ดแวร์ nVidia เป็นคนแรกที่เสนอการใช้งาน OpenGL แบบเต็ม ผู้ค้ารายอื่นหลายรายต้องดิ้นรนซึ่งเป็นสาเหตุหนึ่งที่ทำให้นักพัฒนาซอฟต์แวร์ต้องการ Direct3D: พวกเขาสามารถใช้งานร่วมกับฮาร์ดแวร์ได้หลากหลายกว่า ในที่สุดมีเพียง nVidia และ ATI (ตอนนี้ AMD) ยังคงอยู่และทั้งคู่มีการใช้งาน OpenGL ที่ดี
ดังนั้นขั้นตอนจะถูกตั้งค่า: Direct3D กับ OpenGL มันเป็นเรื่องที่น่าทึ่งจริงๆเมื่อพิจารณาว่า D3D v3 นั้นเลวร้ายเพียงใด
OpenGL Architectural Review Board (ARB) เป็นองค์กรที่รับผิดชอบในการบำรุงรักษา OpenGL พวกเขาออกหมายเลขส่วนขยายดูแลที่เก็บส่วนขยายและสร้าง API รุ่นใหม่ ARB เป็นคณะกรรมการที่ทำจากผู้เล่นในอุตสาหกรรมกราฟิกจำนวนมากรวมถึงผู้ผลิตระบบปฏิบัติการบางราย Apple และ Microsoft ได้เป็นสมาชิกของ ARB หลายครั้ง
3Dfx ออกมาพร้อมกับ Voodoo2 นี่เป็นฮาร์ดแวร์ตัวแรกที่สามารถทำการ multitexturing ได้ซึ่งเป็นสิ่งที่ OpenGL ไม่สามารถทำได้มาก่อน ในขณะที่ 3Dfx นั้นแข็งแกร่งมากเมื่อเทียบกับ OpenGL แต่ NVIDIA ผู้ผลิตชิปกราฟิก multitexturing (TNT1) รุ่นต่อไปก็ชอบมาก ดังนั้น ARB จึงออกส่วนขยาย: GL_ARB_multitexture ซึ่งจะอนุญาตให้เข้าถึงการทำงานหลายอย่าง
ในขณะเดียวกัน Direct3D v5 ก็ออกมา ตอนนี้ D3D ได้กลายเป็นAPI ที่แท้จริงแทนที่จะเป็นอะไรที่แมวอาจอาเจียนขึ้นมา ปัญหา? ไม่มีการทวีคูณ
อุ่ย
ตอนนี้สิ่งนั้นจะไม่เจ็บเกือบเท่าที่ควรเพราะคนไม่ได้ใช้งานหลายอย่าง ไม่ได้โดยตรง การทำงานหลายอย่างที่เจ็บปวดทำให้ประสิทธิภาพลดลงเล็กน้อยและในหลาย ๆ กรณีมันก็ไม่คุ้มค่าเมื่อเทียบกับการผ่านหลายรอบ และแน่นอนว่านักพัฒนาเกมชอบที่จะตรวจสอบให้แน่ใจว่าเกมของพวกเขาทำงานบนฮาร์ดแวร์รุ่นเก่าซึ่งไม่ได้มีการทำมัลติเท็กซ์
D3D จึงได้รับการอภัยโทษ
เวลาผ่านไปและ NVIDIA ใช้ GeForce 256 (ไม่ใช่ GeForce GT-250 ซึ่งเป็น GeForce แรกสุด) ซึ่งเป็นการแข่งขันที่สิ้นสุดในการ์ดกราฟิกในอีกสองปีข้างหน้า จุดขายหลักคือความสามารถในการแปลงยอดและแสง (T&L) ในฮาร์ดแวร์ ไม่เพียงเท่านั้น NVIDIA รัก OpenGL มากจน T&L เอ็นจิ้นของพวกเขาได้อย่างมีประสิทธิภาพคือ OpenGL เกือบตัวอักษร; ดังที่ฉันเข้าใจการลงทะเบียนของพวกเขาบางคนใช้ตัวแจงนับ OpenGL เป็นค่าโดยตรง
Direct3D v6 ออกมาแล้ว หลายรายการในตอนท้าย แต่ ... ไม่มีฮาร์ดแวร์ T&L OpenGL ได้เสมอมี T & L ท่อแม้ว่าก่อนที่ 256 มันถูกนำมาใช้ในซอฟแวร์ ดังนั้นจึงเป็นเรื่องง่ายสำหรับ NVIDIA ที่จะแปลงการใช้งานซอฟต์แวร์เป็นโซลูชันฮาร์ดแวร์ มันจะไม่เป็นจนกว่า D3D v7 จนกระทั่ง D3D ในที่สุดได้รับการสนับสนุนด้านฮาร์ดแวร์ T&L
จากนั้น GeForce 3 ก็ออกมา และหลายสิ่งหลายอย่างเกิดขึ้นในเวลาเดียวกัน
Microsoft ตัดสินใจว่าพวกเขาจะไม่มาสายอีกแล้ว ดังนั้นแทนที่จะดูว่า NVIDIA กำลังทำอะไรอยู่และคัดลอกมันหลังจากข้อเท็จจริงพวกเขาได้รับตำแหน่งที่น่าอัศจรรย์ในการไปหาพวกเขาและพูดคุยกับพวกเขา และจากนั้นพวกเขาตกหลุมรักและมีคอนโซลเล็กน้อยด้วยกัน
การหย่าร้างที่เกิดขึ้นภายหลัง แต่นั่นเป็นอีกครั้ง
สิ่งนี้หมายความว่าสำหรับพีซีคือ GeForce 3 ออกมาพร้อมกันกับ D3D v8 และมันก็ไม่ยากที่จะเห็นว่า GeForce 3 มีอิทธิพลต่อความแตกต่างของ D3D 8 อย่างไร พิกเซลเชดเดอร์ของ Shader Model 1.0 นั้นมีความเฉพาะเจาะจงกับฮาร์ดแวร์ของ NVIDIA ไม่มีความพยายามใด ๆ ในการทำให้ฮาร์ดแวร์ของ NVIDIA เป็นนามธรรม SM 1.0 เป็นเพียงสิ่งที่ GeForce 3 ทำ
เมื่อ ATI เริ่มกระโดดเข้าสู่การแข่งขันกราฟิกการ์ดกับ Radeon 8500 แสดงว่ามีปัญหา ไพพ์ไลน์การประมวลผลพิกเซลของ 8500 นั้นทรงพลังกว่าของ NVIDIA ดังนั้น Microsoft จึงออก Shader Model 1.1 ซึ่งโดยพื้นฐานแล้วก็คือ "สิ่งที่ 8500 ทำ"
นั่นอาจฟังดูเป็นความล้มเหลวในส่วนของ D3D แต่ความล้มเหลวและความสำเร็จเป็นเรื่องขององศา และมหากาพย์ความล้มเหลวก็เกิดขึ้นใน OpenGL-land
NVIDIA ชอบ OpenGL ดังนั้นเมื่อ GeForce 3 ได้รับความนิยม ส่วนขยาย OpenGL ที่เป็นกรรมสิทธิ์ : เฉพาะ NVIDIA เท่านั้น ตามธรรมชาติแล้วเมื่อ 8500 ปรากฏตัวมันก็ไม่สามารถใช้งานได้เลย
ดูอย่างน้อยใน D3D 8 land คุณสามารถรัน SM 1.0 shaders บนฮาร์ดแวร์ ATI แน่นอนว่าคุณต้องเขียนเฉดใหม่เพื่อใช้ประโยชน์จากความเย็นของ 8500 แต่อย่างน้อยโค้ดของคุณก็ใช้งานได้
เพื่อที่จะมีเฉดสีใด ๆใน Radeon 8500 ใน OpenGL ATI ต้องเขียนส่วนขยายของ OpenGL จำนวนหนึ่ง ส่วนขยาย OpenGL ที่เป็นกรรมสิทธิ์ : ATI-only ดังนั้นคุณจึงจำเป็นต้อง codepath NVIDIA และ ATI codepath เพียงที่จะมีเฉดสีที่ทุกคน
ตอนนี้คุณอาจถามว่า "OpenGL ARB อยู่ที่ไหนหน้าที่งานของเขาคือการทำให้ OpenGL เป็นปัจจุบัน" ที่คณะกรรมการหลายแห่งมักจะจบลงด้วยการเป็นคนโง่
เห็นไหมฉันพูดถึง ARB_multitexture ด้านบนเพราะมันคำนึงถึงปัจจัยทั้งหมดนี้ ดูเหมือนว่า ARB (จากมุมมองของคนนอก) เพื่อต้องการหลีกเลี่ยงความคิดที่ว่าจะแตกต่างกันโดยสิ้นเชิง พวกเขาคิดว่าหากพวกเขาตบความสามารถในการกำหนดค่าที่เพียงพอลงในไปป์ไลน์ที่มีฟังก์ชั่นคงที่พวกเขาสามารถเท่ากับความสามารถของไปป์ไลน์ Shader
ดังนั้น ARB จึงปล่อยส่วนขยายหลังจากส่วนขยาย ส่วนขยายทั้งหมดที่มีคำว่า "texture_env" อยู่ในนั้นเป็นอีกความพยายามที่จะแก้ไขการออกแบบที่มีอายุมากนี้ ตรวจสอบรีจิสตรี: ระหว่างส่วนขยาย ARB และ EXT มีส่วนขยายเหล่านี้แปดรายการ หลายคนได้รับการเลื่อนตำแหน่งเป็นรุ่นหลักของ OpenGL
Microsoft เป็นส่วนหนึ่งของ ARB ในเวลานี้ พวกเขาออกไปรอบ ๆ เวลาที่โดน D3D 9 ดังนั้นจึงเป็นไปได้ทั้งหมดที่พวกเขากำลังทำงานเพื่อก่อวินาศกรรม OpenGL ในบางวิธี ฉันเองสงสัยทฤษฎีนี้ด้วยเหตุผลสองประการ หนึ่งพวกเขาต้องได้รับความช่วยเหลือจากสมาชิก ARB คนอื่น ๆ เนื่องจากสมาชิกแต่ละคนได้รับการโหวตเพียงครั้งเดียว และที่สำคัญที่สุดสองข้อคือ ARB ไม่ต้องการความช่วยเหลือจาก Microsoft ในการแก้ไขปัญหา เราจะเห็นหลักฐานเพิ่มเติมว่า
ในที่สุด ARB อาจถูกคุกคามจาก ATI และ NVIDIA (สมาชิกที่ทำงานทั้งสอง) ในที่สุดก็ดึงหัวของพวกเขาออกมานานพอที่จะให้เฉดสีการชุมนุมที่แท้จริง
ต้องการบางสิ่งที่แม้แต่ทำให้งงงวย?
ฮาร์ดแวร์ T&L บางสิ่งบางอย่าง OpenGL มีครั้งแรก มันน่าสนใจ เพื่อให้ได้ประสิทธิภาพสูงสุดที่เป็นไปได้จากฮาร์ดแวร์ T&L คุณต้องจัดเก็บข้อมูลจุดสุดยอดของคุณบน GPU ท้ายที่สุดมันคือ GPU ที่ต้องการใช้ข้อมูลจุดสุดยอดของคุณ
ใน D3D v7 Microsoft ได้นำเสนอแนวคิดของ Vertex Buffers สิ่งเหล่านี้ได้รับการจัดสรรหน่วยความจำ GPU สำหรับการจัดเก็บข้อมูลจุดสุดยอด
ต้องการทราบว่าเมื่อ OpenGL ได้รับสิ่งนี้เทียบเท่าหรือไม่ โอ้ NVIDIA เป็นคนรักทุกสิ่ง OpenGL (ตราบใดที่พวกเขาเป็นส่วนขยายของ NVIDIA ที่เป็นกรรมสิทธิ์) ได้เปิดตัวส่วนขยายช่วงของจุดสุดยอดเมื่อ GeForce 256 ตีครั้งแรก แต่เมื่อไหร่ ARB ตัดสินใจที่จะให้ฟังก์ชั่นที่คล้ายกัน?
สองปีต่อมา นี่คือหลังจากที่พวกเขาได้รับการอนุมัติจุดสุดยอดและส่วนแตก (พิกเซลในภาษา D3D) นั่นคือระยะเวลาที่ ARB ใช้ในการพัฒนาโซลูชันข้ามแพลตฟอร์มสำหรับการจัดเก็บข้อมูลจุดสุดยอดในหน่วยความจำ GPU สิ่งที่ T&L ฮาร์ดแวร์ต้องมีเพื่อให้ได้ประสิทธิภาพสูงสุด
ดังนั้นสภาพแวดล้อมในการพัฒนาของ OpenGL จึงได้รับการแตกหักเป็นระยะเวลาหนึ่ง ไม่มีฮาร์ดแวร์ข้ามฮาร์ดแวร์ไม่มีจุดสุดยอดการจัดเก็บข้อมูล GPU ข้ามฮาร์ดแวร์ในขณะที่ผู้ใช้ D3D สนุกกับทั้งสองอย่าง มันแย่ลงไหม?
คุณ ... คุณสามารถพูดได้ ใส่3D Labs
พวกเขาเป็นใครคุณอาจถาม? พวกเขาเป็น บริษัท ที่ตายไปซึ่งฉันคิดว่าเป็นฆาตกรตัวจริงของ OpenGL แน่นอนว่าความไม่สมบูรณ์ทั่วไปของ ARB ทำให้ OpenGL มีความเสี่ยงเมื่อเป็นเจ้าของ D3D แต่ 3D Labs อาจเป็นเหตุผลเดียวที่ทำให้ฉันนึกถึงสภาวะตลาดปัจจุบันของ OpenGL พวกเขาทำอะไรได้บ้างเพื่อทำให้เกิดสิ่งนั้น
พวกเขาออกแบบภาษาการแรเงา OpenGL
ดูว่า 3D Labs เป็น บริษัท ที่กำลังจะตาย GPU ที่มีราคาแพงของพวกเขาถูกลดลงเนื่องจากแรงกดดันที่เพิ่มขึ้นของ NVIDIA ในตลาดเวิร์กสเตชัน และแตกต่างจาก NVIDIA ห้องทดลอง 3 มิติไม่ปรากฏตัวในตลาดหลัก ถ้า NVIDIA ชนะพวกเขาก็ตาย
ซึ่งพวกเขาทำ
ดังนั้นในการเสนอราคาเพื่อยังคงมีความเกี่ยวข้องในโลกที่ไม่ต้องการผลิตภัณฑ์ของตน Labs 3D ปรากฏตัวในการประชุม Game Developer Conference เพื่อนำเสนอสิ่งที่พวกเขาเรียกว่า "OpenGL 2.0" นี่จะเป็นการเขียนที่สมบูรณ์แบบตั้งแต่เริ่มต้นของ OpenGL API และนั่นทำให้รู้สึก; มีจำนวนมากของ cruft ใน OpenGL API ของในเวลานั้น (หมายเหตุ: ที่ cruft ยังคงมีอยู่) เพียงแค่ดูว่าการโหลดพื้นผิวและการทำงานมีผลผูกพัน; มันเป็นกึ่ง arcane
ส่วนหนึ่งของข้อเสนอของพวกเขาคือภาษาแรเงา เป็นธรรมชาติ อย่างไรก็ตามแตกต่างจากส่วนขยาย ARB ข้ามแพลตฟอร์มปัจจุบันภาษาการแรเงาของพวกเขาคือ "ระดับสูง" (C เป็นระดับสูงสำหรับภาษาการแรเงาใช่จริง ๆ )
ขณะนี้ Microsoft กำลังทำงานกับภาษาแรเงาระดับสูงของพวกเขาเอง สิ่งที่พวกเขาในจินตนาการรวมของ Microsoft เรียกว่า ... ภาษาระดับสูงการแรเงา (HLSL) แต่ภาษาของพวกเขาแตกต่างกันอย่างมากกับภาษา
ปัญหาที่ใหญ่ที่สุดกับภาษา shader ของ 3D Labs ก็คือมันมีอยู่แล้วในตัว ดู HLSL เป็นภาษาที่ Microsoft กำหนดไว้ พวกเขาเปิดตัวคอมไพเลอร์สำหรับมันและมันสร้างรหัสประกอบ Shader Model 2.0 (หรือรุ่นที่ใหม่กว่า Shader) ซึ่งคุณจะป้อนลงใน D3D ใน D3D v9 วัน HLSL ไม่เคยสัมผัสโดยตรงกับ D3D มันเป็นนามธรรมที่ดี แต่มันก็เป็นทางเลือกที่หมดจด และนักพัฒนามักจะมีโอกาสได้คอมไพล์เลอร์และปรับแต่งเอาต์พุตเพื่อประสิทธิภาพสูงสุด
ภาษา Labs 3D ไม่มีสิ่งนั้น คุณให้ภาษาที่เหมือน C กับคนขับและทำให้เกิด shader ตอนจบของเรื่อง. ไม่ใช่ shader ของแอสเซมบลีไม่ใช่สิ่งที่คุณป้อนอย่างอื่น วัตถุ OpenGL จริงที่เป็นตัวแทนของ shader
สิ่งนี้หมายความว่าผู้ใช้ OpenGL ได้เปิดรับความหลากหลายของนักพัฒนาที่เพิ่งได้รับการรวบรวมภาษาเหมือนการชุมนุม ข้อบกพร่องของคอมไพเลอร์วิ่งอาละวาดใน OpenGL Shading Language (GLSL) ที่ตั้งชื่อใหม่ ยิ่งไปกว่านั้นถ้าคุณจัดการให้ shader รวบรวมบนหลาย ๆ แพลตฟอร์มได้อย่างถูกต้อง (ไม่มีความหมายใด ๆ ) คุณก็ยังต้องเจอกับเครื่องมือเพิ่มประสิทธิภาพประจำวัน ซึ่งไม่ดีเท่าที่ควร
ในขณะที่เป็นข้อบกพร่องที่ใหญ่ที่สุดใน GLSL มันไม่ใช่ข้อบกพร่องเพียงอย่างเดียว โดยให้ห่างไกล
ใน D3D และในภาษาแอสเซมบลีที่เก่ากว่าใน OpenGL คุณสามารถผสมและจับคู่เฉดสียอดและพิกเซล (พิกเซล) ตราบใดที่พวกเขาสื่อสารกับอินเทอร์เฟซเดียวกันคุณสามารถใช้จุดสุดยอดใด ๆ กับส่วนที่เข้ากันได้ และมีระดับความไม่ลงรอยกันที่พวกเขาสามารถยอมรับได้ จุดสุดยอด shader สามารถเขียนผลลัพธ์ที่ shader ส่วนไม่ได้อ่าน และอื่น ๆ
GLSL ไม่มีสิ่งใดในนั้น จุดสุดยอดและชิ้นส่วนต่าง ๆ ถูกหลอมรวมเข้าด้วยกันในสิ่งที่ Labs 3D เรียกว่า "โปรแกรมวัตถุ" ดังนั้นหากคุณต้องการแบ่งปันโปรแกรมจุดสุดยอดและชิ้นส่วนคุณต้องสร้างวัตถุโปรแกรมหลายรายการ และสิ่งนี้ทำให้เกิดปัญหาใหญ่เป็นอันดับสอง
เห็นไหม Labs 3D คิดว่าพวกเขาฉลาด พวกเขาใช้รูปแบบการรวบรวมของ GLSL บน C / C ++ คุณใช้. c หรือ. cpp และคอมไพล์มันเป็นไฟล์วัตถุ จากนั้นคุณนำไฟล์ออบเจ็กต์หนึ่งไฟล์ขึ้นไปและลิงก์ไปยังโปรแกรม นั่นคือวิธีที่ GLSL รวบรวม: คุณรวบรวม shader (จุดสุดยอดหรือชิ้นส่วน) ลงในวัตถุ shader จากนั้นคุณวางวัตถุ shader เหล่านั้นในวัตถุโปรแกรมแล้วเชื่อมโยงเข้าด้วยกันเพื่อสร้างโปรแกรมจริงของคุณ
ขณะนี้ไม่ได้ช่วยให้ความคิดเย็นที่อาจเกิดขึ้นเหมือนมี "ห้องสมุด" ให้เฉดสีที่มีรหัสพิเศษที่ให้เฉดสีหลักจะเรียกสิ่งที่มันมีความหมายในทางปฏิบัติก็คือว่า shaders ถูกรวบรวมเป็นครั้งที่สอง หนึ่งครั้งในขั้นตอนการรวบรวมและอีกครั้งในระยะเชื่อมโยง โดยเฉพาะอย่างยิ่งคอมไพเลอร์ของ NVIDIA นั้นเป็นที่รู้จักกันดีในเรื่องของการรันคอมไพล์สองครั้ง มันไม่ได้สร้างตัวกลางรหัสวัตถุบางอย่าง มันรวบรวมเพียงครั้งเดียวและทิ้งคำตอบแล้วรวบรวมอีกครั้งในเวลาลิงค์
ดังนั้นแม้ว่าคุณต้องการที่จะเชื่อมโยง Shader ของคุณกับ Shader ที่แตกต่างกันสองชิ้นคุณต้องรวบรวมมากกว่าใน D3D โดยเฉพาะอย่างยิ่งเมื่อการคอมไพล์ของภาษาที่เหมือน C เสร็จสิ้นแบบออฟไลน์ไม่ใช่ที่จุดเริ่มต้นของการดำเนินการของโปรแกรม
มีปัญหาอื่น ๆ เกี่ยวกับ GLSL อาจเป็นเรื่องผิดที่จะกล่าวโทษผู้ใช้ในห้องทดลอง 3 มิติเนื่องจาก ARB ได้อนุมัติและรวมภาษาไว้ในที่สุด (แต่ไม่มีสิ่งอื่นใดในการริเริ่ม "OpenGL 2.0") แต่มันเป็นความคิดของพวกเขา
และนี่คือส่วนที่น่าเศร้าจริงๆ: 3D Labs นั้นถูกต้อง (ส่วนใหญ่) GLSL ไม่ใช่ภาษาเงาแบบเวกเตอร์ตามวิธีที่ HLSL ใช้ในขณะนั้น นี่เป็นเพราะฮาร์ดแวร์ของ 3D Labs เป็นฮาร์ดแวร์แบบสเกลาร์ (คล้ายกับฮาร์ดแวร์ NVIDIA รุ่นใหม่) แต่ท้ายที่สุดแล้วพวกเขาก็ถูกต้องในทิศทางที่ผู้ผลิตฮาร์ดแวร์หลายรายใช้ฮาร์ดแวร์ของพวกเขา
พวกเขาถูกต้องด้วยโมเดลออนไลน์คอมไพล์สำหรับภาษา "ระดับสูง" D3D ยังเปลี่ยนไปใช้สิ่งนั้นในที่สุด
ปัญหาก็คือ 3D Labs มีสิทธิ์ที่ผิดเวลา และในความพยายามที่จะเรียกอนาคตเร็วเกินไปในการพยายามที่จะเป็นหลักฐานในอนาคตพวกเขาโยนกันในปัจจุบัน ดูเหมือนว่า OpenGL จะมีความเป็นไปได้ในการทำงานของ T&L เสมอ ยกเว้นว่าท่อส่ง T&L ของ OpenGL ยังคงมีประโยชน์ก่อนฮาร์ดแวร์ T&L ในขณะที่ GLSL เป็นหนี้สินก่อนที่โลกจะทัน
GLSL เป็นภาษาที่ดีในขณะนี้ แต่สำหรับเวลา มันช่างน่ากลัว และ OpenGL ทนทุกข์กับมัน
ในขณะที่ฉันยืนยันว่าห้องทดลอง 3 มิติได้รับผลกระทบอย่างรุนแรง แต่เป็น ARB ที่จะตอกตะปูสุดท้ายในโลงศพ
นี่คือเรื่องราวที่คุณอาจเคยได้ยิน เมื่อถึงเวลาของ OpenGL 2.1 แสดงว่า OpenGL ประสบปัญหา มันมีจำนวนมากของ cruft มรดก API ไม่ใช่เรื่องง่ายที่จะใช้อีกต่อไป มี 5 วิธีในการทำสิ่งต่าง ๆ และไม่มีความคิดใดที่เร็วที่สุด คุณสามารถ "เรียนรู้" OpenGL ด้วยบทช่วยสอนง่าย ๆ แต่คุณไม่ได้เรียนรู้ OpenGL API ที่ให้ประสิทธิภาพที่แท้จริงและพลังกราฟิก
ดังนั้น ARB จึงตัดสินใจลองคิดค้น OpenGL อีกครั้ง สิ่งนี้คล้ายกับ "OpenGL 2.0" ของ 3D Labs แต่ดีกว่าเพราะ ARB อยู่ด้านหลัง พวกเขาเรียกมันว่า "Longs Peak"
อะไรคือสิ่งที่ไม่ดีเกี่ยวกับการใช้เวลาในการปรับปรุง API สิ่งนี้ไม่ดีเพราะ Microsoft ปล่อยให้ตัวเองอ่อนแอ ดูนี่เป็นช่วงเวลาที่การเปลี่ยนแปลง Vista
ด้วย Vista ทำให้ Microsoft ตัดสินใจที่จะทำการเปลี่ยนแปลงที่จำเป็นในไดรเวอร์การแสดงผล พวกเขาบังคับให้ไดรเวอร์ส่งไปยังระบบปฏิบัติการสำหรับการจำลองเสมือนหน่วยความจำกราฟิกและสิ่งอื่น ๆ
ในขณะที่เราสามารถถกเถียงข้อดีของสิ่งนี้หรือว่าเป็นไปได้จริงความจริงยังคงเป็นเช่นนี้: Microsoft ถือว่า D3D 10 เป็น Vista (และสูงกว่า) เท่านั้น แม้ว่าคุณจะมีฮาร์ดแวร์ที่สามารถใช้ D3D 10 ได้ แต่คุณไม่สามารถเรียกใช้แอปพลิเคชัน D3D 10 ได้หากไม่ได้ใช้งาน Vista
คุณอาจจำได้ว่า Vista ... อืมสมมติว่ามันใช้ไม่ได้ผล ดังนั้นคุณมีระบบปฏิบัติการที่มีประสิทธิภาพต่ำ API ใหม่ที่รันบนระบบปฏิบัติการนั้นเท่านั้นและฮาร์ดแวร์รุ่นใหม่ที่จำเป็นต้องใช้ API และ OS นั้นในการทำสิ่งใด ๆ ได้เร็วกว่ารุ่นก่อน ๆ
อย่างไรก็ตามนักพัฒนาสามารถเข้าถึงคุณลักษณะระดับ 10 D3D ผ่าน OpenGL พวกเขาทำได้ถ้า ARB ไม่ได้ยุ่งกับ Longs Peak
โดยทั่วไป ARB ใช้เวลาหนึ่งปีครึ่งในการทำงานที่ดีเพื่อให้ API นั้นดีขึ้น เมื่อถึงเวลาที่ OpenGL 3.0 ออกมาจริงการใช้ Vista ก็เพิ่มขึ้น Win7 อยู่ใกล้ ๆ กับการวาง Vista ไว้เบื้องหลังและนักพัฒนาเกมส่วนใหญ่ไม่สนใจคุณสมบัติของคลาส D3D-10 ท้ายที่สุดแล้วฮาร์ดแวร์ D3D 10 ก็สามารถรันแอพพลิเคชั่น D3D 9 ได้ และด้วยพอร์ต PC-to-console ที่เพิ่มขึ้น (หรือนักพัฒนาพีซีกระโดดมาสู่การพัฒนาคอนโซลเลือกของคุณ) นักพัฒนาไม่ต้องการคุณสมบัติระดับ D3D 10
ตอนนี้หากนักพัฒนามีการเข้าถึงคุณสมบัติเหล่านั้นก่อนหน้านี้ผ่านทาง OpenGL บนเครื่อง WinXP การพัฒนา OpenGL อาจได้รับการยิงที่จำเป็นมากในแขน แต่ ARB พลาดโอกาส และคุณต้องการที่จะรู้ว่าส่วนที่เลวร้ายที่สุด?
แม้จะใช้เวลาสองปีอันมีค่าพยายามที่จะสร้าง API ใหม่ตั้งแต่เริ่มต้น ... พวกเขายังคงล้มเหลวและเพิ่งเปลี่ยนกลับไปเป็นสถานะเดิม (ยกเว้นกลไกการคัดค้าน)
ดังนั้น ARB จึงไม่เพียง แต่พลาดโอกาสสำคัญเท่านั้น แต่พวกเขาไม่ได้ทำงานที่ทำให้พวกเขาพลาดโอกาสนั้น มหากาพย์ที่สวยมากล้มเหลวทุกรอบ
และนั่นคือเรื่องราวของ OpenGL กับ Direct3D เรื่องราวของโอกาสที่ไม่ได้รับความโง่เขลาขั้นต้นตาบอดโดยเจตนาและความโง่เขลาง่าย
Which they, in all of Microsoft's collective imagination, called... the High Level Shading Language (HLSL).
LOLled นานกว่า 6 นาทีที่นี้
ฉันพบว่ามันแปลกที่ทุกคนมุ่งเน้นไปที่ฐานผู้ใช้เมื่อคำถามคือ 'นักพัฒนาเกม' ไม่ใช่ 'ผู้แก้ไขเกม'
สำหรับฉันในฐานะนักพัฒนาลีนุกซ์เป็นโรคเลือด มีหลายเวอร์ชันผู้จัดการเดสก์ท็อปชุดคิท UI และอื่น ๆ ... ถ้าฉันไม่ต้องการกระจายงานของฉันเป็นโอเพ่นซอร์สซึ่งผู้ใช้สามารถ (ลอง) คอมไพล์ใหม่เพื่อให้เหมาะกับแพคเกจห้องสมุดและ การตั้งค่ามันเป็นฝันร้าย !
ในทางกลับกัน Microsoft ก็มอบความเข้ากันได้แบบย้อนหลังและความเสถียรของแพลตฟอร์ม (ส่วนใหญ่) เป็นไปได้ที่จะกำหนดเป้าหมายเครื่องทั้งหมดด้วยตัวติดตั้งแบบปิดแหล่งเดียวเช่นคอมพิวเตอร์ที่ใช้ Windows XP, Vista และ 7, 32 และ 64 บิตรสชาติโดยไม่ต้องติดตั้ง DX หรือ VC redistributables ที่เหมาะสม ฯลฯ ...
สิ่งสุดท้ายสิ่งหนึ่งกรุณาทุกคนบนอินเทอร์เน็ตหยุดเมื่อเปรียบเทียบกับ OpenGL และ DIRECTX! ทั้งเปรียบเทียบ Direct3D VS OpenGL หรือไม่ทำเช่นนี้ DirectX ให้การสนับสนุนอินพุตการสนับสนุนด้านเสียงการเล่นภาพยนตร์และอื่น ๆ ที่ OpenGL ไม่รองรับ
เป็นเพราะมีผู้ใช้ Windows บนโลกมากกว่า Linux และ Mac ความจริงก็คือผู้คนทำสิ่งต่าง ๆ ที่มีตลาดที่ใหญ่ที่สุด
สิ่งเดียวกันกับโทรศัพท์มือถือ: Android และ iPhone มีเกมที่ยอดเยี่ยม แต่ Windows Mobile และ Symbian ไม่มี ...
เนื่องจาก Windows มีส่วนแบ่งการตลาดมากกว่า 90% และ Linux (เนื่องจากคุณถามเฉพาะเกี่ยวกับ Linux) มีชื่อเสียงว่ามีผู้ใช้จำนวนมากที่ไม่ต้องการจ่ายค่าซอฟต์แวร์ ไม่ว่าจะจริงหรือไม่จริงก็ตาม การรับรู้อยู่ที่นั่นและมันมีอิทธิพลต่อการตัดสินใจของผู้คน
เนื่องจาก Windows มีการสนับสนุนจากองค์กรขนาดใหญ่ที่มากขึ้นกว่าทศวรรษที่ผ่านมาตัดสินใจที่พวกเขาต้องการพัฒนาเกมที่จะเกิดขึ้นบนเวทีของพวกเขา
สิ่งนี้ไม่เป็นความจริงสำหรับ Mac และตอนนี้ไม่เป็นความจริง ไม่แม้แต่สำหรับ iOS Apple ไม่มีเครื่องมือสำหรับการพัฒนาเกม iOS แต่มันเป็นตลาดขนาดใหญ่ (มีไอโฟนมากกว่าที่นั่นมีพีซีในปี 1995) ที่มีการแข่งขันค่อนข้างน้อยดังนั้นผู้คนก็ทำมันได้
สำหรับลีนุกซ์นั้นไม่มีแม้แต่สถาบันกลางที่สามารถจัดลำดับความสำคัญได้ ทิศทางที่ลินุกซ์กำลังดำเนินอยู่นั้นถูกกำหนดโดยโปรแกรมเมอร์ที่ดีมาก ๆ แต่ไม่ค่อยดีเท่าที่ควร
ในการสร้างเกมพีซีในปัจจุบันคุณต้องมีศิลปิน 2d / 3d นักออกแบบเกมผู้เขียนบทนักทดสอบและสิ่งอื่น ๆ มากมาย สำหรับการเขียนโปรแกรมจริงคุณอาจใช้โปรแกรมเกมจริง (CryEngine, Unreal Engine, Quake Engine, Source Engine) ดังนั้นคุณอาจทำสิ่งทั้งหมดได้โดยไม่ต้องมีโปรแกรมเมอร์จริง
ด้วยเหตุนี้และเนื่องจากลักษณะของธุรกิจโปรแกรมเมอร์จึงไม่ค่อยพูดในสิ่งที่เลือกแพลตฟอร์ม และโดยทั่วไปแล้วผู้จัดการจะมองหาความช่วยเหลือซึ่งเป็นสิ่งที่ Microsoft อ้างเพื่อเสนอและจัดการกับสิ่งต่าง ๆ ที่ยึดครองความคิดของพวกเขาซึ่งโอเพนซอร์สนั้นไม่ใช่
ด้วยเหตุผลดังกล่าวจึงมีการพัฒนาซอฟต์แวร์สำหรับผู้ใช้ปลายทางเพื่อการพาณิชย์ส่วนใหญ่บน Windows
ฉันทำงานให้กับ บริษัท ที่สร้างเกมแฟลชและไม่ได้ผูกติดกับแพลตฟอร์มใดแพลตฟอร์มหนึ่ง อย่างไรก็ตามเราทุกคนพัฒนาบน windows เพราะเครื่องมือส่วนใหญ่ที่เราใช้ไม่สามารถใช้ได้กับ Linux
อย่างที่บางคนบอกไปแล้วส่วนที่สำคัญที่สุดคือฐานผู้ใช้ 95% ของผู้ใช้พีซีใช้ Windows นักเล่นเกมพีซีใช้ Windows เกือบเฉพาะ แม้แต่คนที่ใช้ Mac หรือ Linux ส่วนใหญ่ก็มักจะเรียกใช้เกม Windows ผ่านการจำลองเสมือนหรือการจำลอง (มีข้อยกเว้นน้อยมาก)
แต่ข้อมูลประชากรไม่ใช่ทุกอย่าง ฉันจะไม่ดูถูกดูแคลนส่วนที่ Microsoft กำลังทำเพื่อทำให้แพลตฟอร์มน่าสนใจยิ่งขึ้นสำหรับนักพัฒนาเกม โดยทั่วไปคุณจะได้รับอย่างเต็มที่ให้ความสำคัญชุดของเครื่องมือฟรีที่สำคัญที่สุดXNA Game Studio สิ่งนี้ช่วยให้ไม่เพียง แต่การพัฒนาสำหรับ Windows แต่ยังสำหรับXbox360ด้วย และด้วยรุ่นล่าสุดแม้สำหรับโทรศัพท์ WP7 เห็นได้ชัดว่าเป็นเครื่องมือของ Microsoft จึงใช้ DirectX ไม่ใช่ OpenGL
Ewwww ฉันทำไม่ได้ ฉันใช้ลีนุกซ์เกือบเฉพาะ ฉันบูทสองครั้งเป็น Windows เพื่อสร้าง Windows และใช้ Mac สำหรับ Mac ที่สร้าง แต่นั่นก็คือ
เคล็ดลับเป็นกรอบข้ามแพลตฟอร์มที่เราพัฒนาขึ้นในช่วงหลายปีที่ผ่านมา เกมของเราถูกสร้างขึ้นมาจากสิ่งนั้นและประพฤติตนเหมือนกันใน Linux / OpenGL, Mac / OpenGL และ Windows / Direct3D (และในไม่ช้าใน iOS / OpenGL)
บริษัท ของฉันไม่ยอมรับชื่อ AAA ดังนั้นจึงอาจไม่มีผลกับเกมเหล่านี้ แต่เราสร้างเกมแคชชวลชั้นนำ (ดูเว็บไซต์ - CSI: NY, Murder She Wrote และ 2011s สองรายการที่กำลังจะถึงนี้คือตัวอย่างของหนังสือที่มีลิขสิทธิ์ที่สำคัญ คดีที่สูญหายของ Sherlock Holmes 1 และ 2 ก็ประสบความสำเร็จเช่นกัน)
ฉันจะไม่ยอมแพ้ gedit + gcc + gdb + valgrind สำหรับสิ่งอื่น
ทุกวันนี้ลีนุกซ์มีความเป็นคูรีมากกว่าเมื่อพูดถึงการพัฒนาเกมและนักพัฒนาส่วนใหญ่น่าจะดีกว่าที่จะทำเวอร์ชั่น OS X พอร์ตก่อนหน้าลีนุกซ์รุ่นลีนุกซ์ (ดูสิ่งต่างๆเช่น Steam) ถึงแม้ตลาดคอนโซลมีค่ามากกว่าแพลตฟอร์มทั้งสองนี้รวมกันสำหรับเกม ...
หากคุณต้องการโมโนแพลตฟอร์ม DirectX ก็ใช้ได้ หากคุณต้องการเป็นแพลตฟอร์มข้ามมีโอกาสที่ดีที่คุณจะต้องไปกับ OpenGL อย่างน้อยบางแพลตฟอร์มอื่น ๆ
คำตอบนั้นชัดเจน วัตถุประสงค์ของการเขียนเกมคือการทำเงิน ผู้ใช้ปลายทางมากขึ้นที่ใช้ Windows ดังนั้นจึงมีตลาดที่ใหญ่กว่าและคุณคาดว่าจะสร้างรายได้จากเกม Windows มากกว่าเกม Linux มันง่ายมาก
หากคุณเคยถามตัวเองว่า 'ทำไมคนอื่นทำ ... ' เพียงจำไว้ว่าเงินทำให้โลกหมุนไป
เครื่องมือเครื่องมือเครื่องมือ
นั่นคือสิ่งที่มันลงมา พัฒนาบน Windows และคุณจะได้รับเครื่องมือพัฒนาที่ดีที่สุดในโลก ไม่มีอะไรมาใกล้กับดีบักเกอร์ของ Visual Studio จากระยะไกล DirectX Debug Runtimes นั้นยอดเยี่ยม PIX นั้นยอดเยี่ยมและสิ่งที่เทียบเท่ากันนั้นไม่มีอยู่ในแพลตฟอร์ม / API อื่น ๆ แน่นอนว่ามีบางสิ่งที่ดีอยู่ที่นั่น ฉันไม่ได้บอกว่าเครื่องมือบนแพลตฟอร์มอื่น ๆ นั้นไม่ดี แต่เครื่องมือที่ MS ให้มานั้นล้ำหน้ากว่าแพ็ค (ยกเว้นที่มีเกียรติ: Valgrind) ที่มันไม่ตลกเลย
บรรทัดล่างคือเครื่องมือเหล่านี้ช่วยคุณ พวกเขาช่วยให้คุณทำสิ่งต่างๆได้สำเร็จพวกเขาช่วยให้คุณทำงานได้อย่างมีประสิทธิภาพพวกเขาช่วยให้คุณมุ่งเน้นไปที่ข้อผิดพลาดในรหัสของคุณเองมากกว่าที่จะต่อสู้กับ API ที่ไม่เคยมีพฤติกรรมเหมือนเอกสาร
ดังนั้นฉันจึงได้ตอบคำถามเหล่านี้ทั้งหมดและในฐานะผู้พัฒนาเกมที่มีรหัสในเกมคอนโซลที่วางบนชั้นวาง Walmart ฉันมีคำตอบที่แตกต่างกันมาก
การกระจาย
ดูถ้าคุณต้องการอยู่ในคอนโซล Nintendo คุณต้องได้รับอนุญาตจาก Nintendo ซื้อจากโรงงานของ Nintendo จ่ายค่าใช้จ่ายของ Nintendo เจรจากับ Walmart จัดการกับคลังสินค้าคุณต้องการเงินล่วงหน้าเพื่อผลิตพิมพ์กล่องเพื่อจัดส่ง เพื่อทำประกันทั้งหมดและอื่น ๆ
หากคุณต้องการเข้าสู่ XBox แน่ใจว่ามี XBLA แต่คุณยังต้องการการให้พรของ Microsoft คุณต้องรอการต่อแถวของคุณมันเป็นหมื่นดอลลาร์เพื่อปลดแพตช์ ฯลฯ
บน iOS คุณยังต้องใช้แอปเปิ้ลและพวกเขาสามารถ (และทำ) ตามอำเภอใจดึงคุณ
บน Steam คุณยังต้องได้รับอนุญาตจาก Valve หรือ Greenlight และเงินจำนวนมาก
.
บน Windows? คุณตั้งค่าเว็บไซต์และปุ่มดาวน์โหลด
.
ฉันไม่ได้บอกว่าแพลตฟอร์มอื่น ๆ ไม่มีคุณค่า แต่มีเพื่อให้ * * * * * * * * มากสิ่งที่น่ากลัวเกิดขึ้นเมื่อคุณกำลังพยายามที่จะพัฒนาเกมที่ให้ฉันสัญญาของความสามารถในการเพียงแค่ตบไบนารีบนเว็บไซต์และมุ่งเน้นไปที่การทำงาน - อย่างน้อยการเริ่มต้น - ลดอุปสรรคความล้มเหลวที่อาจเกิดขึ้นได้จริงๆ
"เราสามารถทำพอร์ต XBLA ได้ในภายหลังเมื่อความคิดมั่นคง"
และในระดับที่น้อยกว่านี้ก็เป็นสิ่งที่ดีสำหรับลีนุกซ์เช่นกันและหากลูกค้าเจ็ดรายดีคุณสามารถเริ่มต้นได้ที่นั่น
แต่ Windows มีข้อได้เปรียบใหญ่สามประการคือการพัฒนาแบบเปิดอย่างแท้จริงการปรับใช้แบบเปิดอย่างแท้จริงและฐานลูกค้าที่มีขนาดใหญ่และใช้งานมากซึ่งมีความสนใจในเรื่องแปลก ๆ
มันยากที่จะจินตนาการว่าฉันจะเริ่มจากตรงไหน
ฉันคิดว่าคุณควรอ่านเพิ่มเติมเกี่ยวกับประวัติของDirectXและบทความนี้
ฉันคิดว่า MS เลือก DX มากกว่า openGL เพราะพวกเขาต้องการล็อคผู้คนให้ใช้ระบบปฏิบัติการของตัวเอง
มีหลายสิ่งที่ต้องทำเกี่ยวกับการเมืองและการควบคุม ในช่วงปลายยุค 90 SGI และ MS ได้ตกลงที่จะรวมความพยายามอย่างแท้จริง:
http://en.wikipedia.org/wiki/Fahrenheit_graphics_API
SGI ลงทุนอย่างหนักในโครงการ MS ไม่ได้ SGI ต้องการ MS มากกว่า SGI ที่ต้องการ ส่วนที่เหลือคือประวัติศาสตร์
D3D และ OpenGL เป็นสอง API ที่แตกต่างกันมากมันขึ้นอยู่กับนักพัฒนาที่จะเลือกสิ่งที่เหมาะสมกับความต้องการของคุณ
เพียงเพราะ Linux ล้มเหลวอย่างน่ากลัวในฐานะระบบเดสก์ท็อป อย่างที่ใครบางคนชี้ให้เห็นก่อนหน้านี้ Linux เป็นระเบียบสำหรับนักพัฒนา (ห้องสมุดที่แตกต่างกัน ui toolkits ฯลฯ )
ปัญหาอีกประการหนึ่งคือความอิสระและการขาดการสนับสนุนซอฟต์แวร์ที่เป็นกรรมสิทธิ์ Nvidia ให้บริการไดรเวอร์ (กรรมสิทธิ์) ที่ดีสำหรับ Linux เสมอ แต่ Ubuntu และ distros อื่น ๆ จะไม่จัดส่ง นอกจากนี้ยังไม่มีอินเตอร์เฟสไดรเวอร์ไบนารีสำหรับ Linux เช่นเดียวกับ Windows (มีไฟล์ข้อความชื่อ binaryApiNonsense.txt หรือบางอย่างในเคอร์เนลซอร์ส) ต้องบอกว่ามีเพียงฮาร์ดแวร์ของ Nvidia เท่านั้นที่รองรับ Linux ได้อย่างถูกต้อง คุณสามารถเล่นเกม ID ซอฟต์แวร์ส่วนใหญ่โดยใช้ฮาร์ดแวร์ Nvidia ภายใต้ Linux
เครื่องมือการพัฒนาสิ่งต่อไป MSFT ให้การสนับสนุน C ++ ที่ยอดเยี่ยมและดีบักเกอร์ Visual Studio นั้นดีกว่า gdb สำหรับ C ++ สุดท้าย แต่ไม่ท้ายสุดเครื่องมือเพิ่มเติมหายไปเช่น Photoshop นอกจากนี้. net ยังช่วยให้คุณสร้างเครื่องมือ gui ได้อย่างรวดเร็ว สตูดิโอเกมจำนวนมากมีรหัสเครื่องมือสำหรับใช้ภายในโดยใช้. net framework
ฉันเกือบลืมไปแล้วว่าระบบกราฟิกนั้นน่ากลัวมากในสมัยที่พวกเขาเพิ่งย้าย X11 มาเพราะมันเป็นสิ่งที่ง่ายที่สุดที่ทำงานได้ พวกเขาไม่สามารถออกแบบและใช้งานระบบกราฟิกที่ทันสมัยซึ่ง OSx และ Win มีได้อย่างเหมาะสม