ในเวลาเช่นนี้ฉันมักจะไปสำรวจการสำรวจฮาร์ดแวร์ของ Steam: http://store.steampowered.com/hwsurvey/ - คุณจะเห็นว่าส่วนแบ่งตลาดของระบบคลาส DX10 / 11 เกือบ 80%; สิ่งนี้เทียบเท่ากับ GL3.3 หรือสูงกว่าในวงกว้าง 80% นี้ถูก จำกัด ให้กับผู้ใช้ Vista / 7 - เพิ่มใน DX10 / 11 GPU ด้วย XP และคุณเพิ่มขึ้นเป็น 90%
โปรดทราบว่าเรากำลังพูดถึงนักเล่นเกมตัวยงที่นี่เล็กน้อยจากนั้นคุณต้องเริ่มคิดถึงกลุ่มเป้าหมายของคุณ เป็นคนที่คุณต้องการกำหนดเป้าหมายหรือไม่ คุณตั้งเป้าที่ผู้ที่มีฮาร์ดแวร์ระดับล่างมากกว่านี้หรือไม่? แล้วกราฟิคของ Intel ล่ะ? แล้วผู้ใช้ Mac และ Linux ล่ะ นี่คือคำถามทั้งหมดที่คุณต้องตอบด้วยตัวคุณเองดังนั้นแนวทางทั่วไปที่กว้างที่สุดคือสิ่งที่ดีที่สุดที่คุณจะได้รับ
นอกจากนั้นคุณต้องคำนึงถึงข้อเท็จจริงที่ว่าหากคุณเริ่มเรียนรู้วันนี้ด้วยความตั้งใจที่จะจัดส่งบางอย่างคุณจะต้องดูระยะเวลาอย่างน้อยหนึ่งปีก่อนที่คุณจะไปถึงที่นั่น (เว้นแต่เรากำลังพูดถึง เกี่ยวกับกรณีเล็ก ๆ น้อย ๆ / เรียบง่ายจริงๆ) ด้วยแนวโน้มความสามารถของ gfx ที่เพิ่มสูงขึ้นอย่างต่อเนื่องเรากำลังมองหาฮาร์ดแวร์ GL3.3 + ที่ได้รับประโยชน์ 100% ในเวลานั้น
จากนั้นให้คำนึงถึงสิ่งนั้นด้วยการใช้ GL2.1 หรือต่ำกว่านั้นคุณจะต้องเรียนรู้และใช้เรื่องไร้สาระที่ไร้สาระเก่าอันน่าสะพรึงกลัวมากมายแม้ว่าคุณจะ จำกัด ตัวเองไว้ที่ส่วนย่อยของเงาและ VBOs ของ GL2.1 (ระดับ GLSL นั้นน่ารังเกียจ และสตรีมมิ่ง VBOs ทุกคน แต่ไม่สามารถใช้งานได้โดยไม่ต้อง GL_ARB_map_buffer_range) - GL3.3 + ได้แนะนำมากดีกว่า (และ performant เพิ่มเติม) วิธีการในการจัดการหลายสิ่งที่คุณจะได้รับการใช้งานที่ดีของฮาร์ดแวร์ของผู้เล่น (และพวกเขาจะขอบคุณ คุณทำอย่างนั้น) และคุณจะใช้เวลาเขียนโค้ดที่มีประสิทธิผลมากกว่าการต่อสู้กับ API ที่ไม่ต้องการร่วมมือกับคุณ
และแน่นอนว่ามีสถานการณ์คนขับที่หวั่นเกรง ความจริงที่ยาก แต่จริงก็คือไดรเวอร์ GL ใน Windows อยู่ในสถานะเสียใจ - NV รองรับสิ่งที่ไม่ควรทำ AMD ไม่สนับสนุนสิ่งที่ควรทำและกับ Intel คุณจำเป็นต้อง จำกัด ตัวเองกับฟังก์ชัน GL ซึ่งมี เทียบเท่าใน D3D GL_VERSION ที่ใหม่กว่ามีโอกาสมากขึ้นที่คุณจะพบข้อบกพร่องของไดรเวอร์ แต่สำหรับ GL3.3 นั้นมีความเสถียรพอสมควร
ดังนั้นสรุปคือถ้าไม่มีข้อมูลอื่น ๆ (กลุ่มเป้าหมาย ฯลฯ ) ฉันจะกำหนดเป้าหมาย GL3.3 เป็นพื้นฐาน (อาจดึงการทำงานจาก GL_VERSION ที่สูงกว่าที่มีอยู่และตำแหน่งที่ไม่รบกวนรหัสฐาน) มากเกินไป) เว้นแต่จะมีเหตุผลที่เฉพาะเจาะจงและมีการระบุอย่างชัดเจนเพื่อลดระดับต่ำลง (และฉันต้องการให้แน่ใจอย่างนั้น 100% มากกว่าที่จะใช้ความคิดที่คลุมเครือของ " แต่สิ่งที่เกี่ยวกับผู้ที่มีอายุมากกว่าฮาร์ดแวร์ ") ในกรณีหลังฉันจะไม่ไปต่ำกว่า GL2.1 และฉันต้องการดึงฟังก์ชันการทำงาน 3.x มากที่สุดเท่าที่จะทำได้