ห้องสมุดคณิตศาสตร์ที่สมบูรณ์สำหรับใช้ในเกม OpenGL ES 2.0 หรือไม่ [ปิด]


14

คุณทราบหรือไม่ว่าไลบรารีคณิตศาสตร์ข้ามแพลตฟอร์มที่สมบูรณ์ (หรือเกือบจะสมบูรณ์) สำหรับใช้ในเกม OpenGL ES 2.0?

ห้องสมุดควรมี:

  • คลาส Matrix2x2, เมทริกซ์ 3x3, Matrix4x4
  • quaternions
  • คลาส Vector2, Vector3, Vector4
  • คลาสมุมออยเลอร์
  • การดำเนินการในชั้นเรียนที่กล่าวถึงการแปลง ฯลฯ
  • การดำเนินการทางคณิตศาสตร์ที่ใช้เป็นมาตรฐานในกราฟิก 3 มิติ (ผลิตภัณฑ์ Dot, Cross Product, SLERP, ฯลฯ ... )

มี API คณิตศาสตร์ดังกล่าวสามารถใช้ได้ทั้งแบบสแตนด์อโลนหรือเป็นส่วนหนึ่งของแพคเกจใด ๆ ?

ภาษาการเขียนโปรแกรม: Visual C ++ แต่วางแผนที่จะย้ายไปยัง OS X และ Android OS


คำถามที่เกี่ยวข้อง : gamedev.stackexchange.com/questions/12601/simd-c-library/12606
legends2k

ไม่มีห้องสมุดคณิตศาสตร์ที่สมบูรณ์แบบสำหรับตอนนี้ฉันแค่พยายามเขียนข้อกำหนดเล็กน้อยและไม่มีห้องสมุดที่มีอยู่ในความเป็นจริงฉันต้องการให้ใครบางคนสร้างห้องสมุดง่าย ๆ เช่น GLM ด้วยฟังก์ชั่นเดียวกับ shaders + ลักษณะของห้องสมุดคณิตศาสตร์ Ogre และฟังก์ชั่นบางอย่างของมัน (นั่นคือ GLM missin เช่น view frustum, bounding boxes เป็นต้น) โปรดทราบว่า GLM นั้นไม่เร็ว (ในความเป็นจริงที่ไม่สำคัญ) ดังนั้นฉันสงสัยว่าบางคนจะใช้มันใน raytracers หรือสิ่งที่เข้มข้นมากขึ้น มีประโยชน์เนื่องจาก API และสไตล์การออกแบบ
GameDeveloper

คำตอบ:


14

+1 @Josh: ขอบคุณสำหรับเคล็ดลับดีๆของคุณ ฉันกำลังพิจารณาห้องสมุดGLM ( glm.g-truc.net ) ห้องสมุดคณิตศาสตร์ GL ฉันจะรอดูว่าห้องสมุดใดที่ผู้คนไม่ได้ทดลองใช้และได้รับการพิสูจน์ว่าดี
Bunkai.Satori

3
รหัสขอแนะนำ GLM ฉันใช้มันและ "ยอดเยี่ยม"
brainydexter

+1, ฉันชอบ CML มากและจะโพสต์สิ่งนั้นเป็นคำตอบ =) อย่างไรก็ตามมันขึ้นอยู่กับการปรับแต่งคอมไพเลอร์ให้มากที่สุดเนื่องจากเป็นข้อมูลพื้นฐานและเทมเพลต หากคุณกำหนดเป้าหมายไปยังอุปกรณ์มือถือ (น่าจะเป็นที่คุณอ้างอิง ES) ห้องสมุดคณิตศาสตร์อื่น ๆ อาจเหมาะสำหรับเป้าหมายมากขึ้น
Jari Komppa

สวัสดี Brainy, Jari ขอบคุณสำหรับความคิดเห็นของคุณ ฉันยังต้องการดูว่ามีตัวเลือกเพิ่มเติมพร้อมข้อเสนอแนะของผู้ใช้หรือไม่ดังนั้นฉันต้องการเปิดคำถามนี้ไว้ซักครู่
Bunkai.Satori

@Jari - เมื่อพูดถึงการเพิ่มประสิทธิภาพห้องสมุดคณิตศาสตร์สำหรับแพลตฟอร์ม OpenGL ES มีอะไรบ้าง? ฉันหมายความว่าถ้าสูตรและชนิดข้อมูลได้รับการออกแบบอย่างเหมาะสมมีอะไรอีกบ้างที่สามารถทำได้เพื่อเพิ่มประสิทธิภาพไลบรารีสำหรับแพลตฟอร์ม ES (อาจเป็นคำถามเบื้องต้น แต่ฉันไม่มีคำตอบสำหรับเรื่องนั้น)
Bunkai.Satori

8

Eigenเป็นไลบรารีคณิตศาสตร์ส่วนหัว C ++ เท่านั้นที่รองรับ SSS, AltiVec และ ARM Neonis vectorisation


+1 สำหรับสุดยอดเคล็ดลับ สวัสดี Simon ขอบคุณสำหรับเคล็ดลับที่ยอดเยี่ยมของคุณ ฉันเริ่มใช้ GLM (OpenGL Math Library) และมันก็ค่อนข้างน่าอัศจรรย์ มันมีทุกอย่างตั้งแต่เวกเตอร์เมทริกซ์คณิตศาสตร์ควอเทอเนียนนอลการแทรกซึม SLERP ฯลฯ ... จนถึงตอนนี้มันมีมากกว่าที่ฉันต้องการจริงๆดังนั้นฉันจึงมีความสุขกับมันในตอนนี้
Bunkai.Satori

6

+1 สำหรับเคล็ดลับที่ดี สวัสดี Maik ขอบคุณสำหรับความคิดเห็นของคุณ ในความคิดของฉันที่สองอาจมีประโยชน์โดยเฉพาะอย่างยิ่งเมื่อเกมรวม Bullet Physics เกมของฉันกำลังจะใช้ Bullet Physics แต่น่าเสียดายที่ฉันเริ่มใช้ GLM ดังนั้นฉันจะพยายามติดกับ GLM
Bunkai.Satori

4

ฉันทำงานเพิ่ม GLKMath ของ Apple ในการทดสอบนี้ (จริง ๆ แล้วแยก fork นี้ )

นี่คือผลลัพธ์ของiPod Touch รุ่นที่ 4ของฉัน :

Eigen:
Additions: 77624 milliseconds.
Multiplications: 227179 milliseconds.

GLM:
Additions: 23935 milliseconds.
Multiplications: 80599 milliseconds.

CML:
Additions: 102390 milliseconds.
Multiplications: 161059 milliseconds.

GLKMath:
Additions: 8526 milliseconds.
Multiplications: 21775 milliseconds.

นี่คือรหัสของฉัน

ฉันไม่มีอุปกรณ์ Android แต่ฉันอยากรู้ว่า GLKMath จะทำงานบน Android ได้อย่างไร


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.