มีไลบรารีสนับสนุน OpenGL ฟรีสำหรับ C # หรือไม่ ถ้าเป็นเช่นนั้นฉันจะใช้อันไหนและฉันจะหาโครงการตัวอย่างได้ที่ไหน
C # มีคลาสสำหรับ OpenGL หรือไม่
มีไลบรารีสนับสนุน OpenGL ฟรีสำหรับ C # หรือไม่ ถ้าเป็นเช่นนั้นฉันจะใช้อันไหนและฉันจะหาโครงการตัวอย่างได้ที่ไหน
C # มีคลาสสำหรับ OpenGL หรือไม่
คำตอบ:
OpenTKเป็นการปรับปรุงเหนือ Tao API เนื่องจากใช้รูปแบบ C # ที่เป็นสำนวนที่มีการโอเวอร์โหลด enums ที่พิมพ์มากข้อยกเว้นและประเภท. NET มาตรฐาน:
GL.Begin(BeginMode.Points);
GL.Color3(Color.Yellow);
GL.Vertex3(Vector3.Up);
ตรงข้ามกับเต่าซึ่งสะท้อนเฉพาะ C API:
Gl.glBegin(Gl.GL_POINTS); // double "gl" prefix
Gl.glColor3ub(255, 255, 0); // have to pass RGB values as separate args
Gl.glVertex3f(0, 1, 0); // explicit "f" qualifier
ทำให้การย้ายพอร์ตยากขึ้น แต่ใช้งานได้ดีอย่างไม่น่าเชื่อ
เป็นโบนัสให้การแสดงผลแบบอักษรการโหลดพื้นผิวการจัดการอินพุตเสียงคณิตศาสตร์ ...
อัปเดตเมื่อ 18 มกราคม 2559 : วันนี้ผู้ดูแลระบบ OpenTK ได้ก้าวออกไปจากโครงการทำให้อนาคตไม่แน่นอน ฟอรัมเต็มไปด้วยสแปม ผู้ดูแลแนะนำให้ย้ายไปที่ MonoGame หรือ SDL2 #
อัปเดต 30 มิถุนายน 2020 : OpenTK มีผู้ดูแลใหม่มาระยะหนึ่งแล้วและมีชุมชนที่ไม่ลงรอยกัน ดังนั้นคำแนะนำก่อนหน้านี้ในการใช้ไลบรารีอื่นจึงไม่จำเป็นต้องเป็นจริง
ฉันคิดว่า @korona หมายถึงอะไรเนื่องจากเป็นเพียง C API คุณสามารถใช้งานได้จาก C # โดยตรงด้วยการพิมพ์จำนวนมากเช่นนี้:
[DllImport("opengl32")]
public static extern void glVertex3f(float x, float y, float z);
คุณต้องทำสิ่งนี้กับทุกฟังก์ชั่น OpenGL ที่คุณเรียกใช้และโดยพื้นฐานแล้ว Tao ได้ทำเพื่อคุณ
เต๋าควรจะเป็นกรอบที่ดี
จากไซต์ของพวกเขา:
Tao Framework สำหรับ. NET คือชุดของการผูกเพื่ออำนวยความสะดวกในการพัฒนาแอปพลิเคชันสื่อข้ามแพลตฟอร์มโดยใช้แพลตฟอร์ม. NET และ Mono
SharpGLเป็นโครงการที่ให้คุณใช้ OpenGL ใน Windows Forms หรือ WPF applications
คุณสามารถ OpenGL โดยไม่ต้องใช้กระดาษห่อหุ้มและใช้งานได้ใน C # เช่นเดียวกับที่ Jeff Mc กล่าวคุณจะต้องนำเข้าฟังก์ชันทั้งหมดที่คุณต้องการด้วย DllImport
สิ่งที่เขาทิ้งไว้คือต้องสร้างบริบทก่อนที่คุณจะสามารถใช้ฟังก์ชัน OpenGL ได้ ไม่ใช่เรื่องยาก แต่มี DllImports อื่น ๆ ที่ไม่ใช้งานง่ายที่ต้องทำ
ฉันได้สร้างตัวอย่างโครงการ C # ใน VS2012 โดยเกือบจะเป็นขั้นต่ำที่จำเป็นเพื่อให้ OpenGL ทำงานบนกล่อง Windows เพียงแค่ทาสีหน้าต่างเป็นสีน้ำเงิน แต่ก็น่าจะเพียงพอสำหรับคุณเริ่มต้น ตัวอย่างที่สามารถพบได้ที่http://www.glinos-labs.org/?q=programming-opengl-csharp มองหาตัวอย่างNo Wrapperที่ด้านล่าง
ฉันอยากจะแนะนำTao Frameworkด้วย แต่หมายเหตุเพิ่มเติม:
ดูบทเรียนเหล่านี้: http://www.taumuon.co.uk/jabuka/
คุณต้องการให้ไลบรารีสนับสนุนเหล่านี้ทำอะไร เพียงแค่ใช้ OpenGL จาก C # นั้นง่ายพอและไม่ต้องใช้ไลบรารีเพิ่มเติมใด ๆ อีกต่อไป
เกี่ยวกับ (ค่อนข้างไม่ตรงกับหัวข้อที่ฉันรู้ แต่เนื่องจากมันถูกนำมาก่อนหน้านี้) ตัวเลือก XNA กับ OpenGL อาจเป็นประโยชน์ในหลาย ๆ กรณีที่จะใช้ OpenGL แทน XNA (และใน XNA อื่นแทน OpenGL ... )
หากคุณจะเรียกใช้แอปพลิเคชันบน Linux หรือ Mac โดยใช้ Mono อาจเป็นทางเลือกที่ดีในการใช้ OpenGL นอกจากนี้ซึ่งไม่เป็นที่รู้จักในวงกว้างฉันคิดว่าหากคุณมีลูกค้าที่จะเรียกใช้แอปพลิเคชันของคุณในสภาพแวดล้อม Citrix DirectX / Direct3D / XNA จะไม่เป็นทางเลือกที่ประหยัดเท่า OpenGL เหตุผลก็คือแอปพลิเคชัน OpenGL สามารถโฮสต์ร่วมบนเซิร์ฟเวอร์จำนวนน้อยกว่า (เนื่องจากปัญหาด้านประสิทธิภาพเซิร์ฟเวอร์เดียวไม่สามารถโฮสต์อินสแตนซ์ของแอปพลิเคชันได้ไม่ จำกัด จำนวน) มากกว่าแอปพลิเคชัน DirectX / XNA ซึ่งต้องการเซิร์ฟเวอร์เสมือนเฉพาะเพื่อทำงานในฮาร์ดแวร์ โหมดเร่งความเร็ว ข้อกำหนดอื่น ๆ มีอยู่เช่นการ์ดแสดงผลที่รองรับเป็นต้น แต่ฉันจะรักษาปัญหา XNA เทียบกับ OpenGL ในฐานะสถาปนิกไอทีนักพัฒนาซอฟต์แวร์ ฯลฯ สิ่งนี้จะต้องพิจารณาก่อนเลือกระหว่าง OpenGL และ DirectX / XNA ...
หมายเหตุด้านข้างคือ WebGL ใช้ OpenGL ES3 afaik ...
โปรดทราบว่านี่ไม่ใช่ข้อควรพิจารณาเพียงอย่างเดียว แต่อาจทำให้ทางเลือกง่ายขึ้นสำหรับบางคน ...
XNA 2.0 ต้องการการ์ด shader 1.1 ขั้นต่ำ ในขณะที่เทคโนโลยีเก่าไม่ใช่ทุกคนที่มี แล็ปท็อปรุ่นใหม่บางรุ่น (จากประสบการณ์ของเราแท็บเล็ต Toshiba ที่มีกราฟิก Intel) ไม่มีการรองรับ shader 1.1 XNA จะไม่ทำงานบนเครื่องเหล่านี้
นี่เป็นปัญหาสำคัญสำหรับเราและเราได้เปลี่ยนไปใช้ Tao และ OpenGL นอกจากนี้เรายังมีการผูกสำหรับเสียงและการสนับสนุน Lua ด้วยเต่า