หน้าต่างโปร่งใสเหนือ OpenGL

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


person Adam D    schedule 28.02.2012    source แหล่งที่มา
comment
เท่าที่ฉันรู้ความโปร่งใสใช้ได้เฉพาะระหว่างรายการ WPF เท่านั้น ดังนั้นฉันแปลกใจที่บางครั้งมันก็ใช้ได้กับคุณ   -  person Ignacio Soler Garcia    schedule 28.02.2012
comment
หน้าต่าง OpenGL ไม่โปร่งใส แต่เป็นหน้าต่าง wpf มันใช้งานได้ดีมาก แต่ปัญหานี้เกิดขึ้นเมื่อฉันคิดว่าการเรนเดอร์แบบอะซิงโครนัส (ความคิดเห็นของฉัน)   -  person Adam D    schedule 28.02.2012
comment
เท่าที่ฉันรู้หน้าต่าง WPF นั้นโปร่งใสกับหน้าต่าง WPF อื่น ๆ เท่านั้น คุณไม่สามารถใส่การควบคุมแบบโปร่งใส WPF เหนือตัวควบคุม Windows Forms และคาดหวังให้ทำงานได้   -  person Ignacio Soler Garcia    schedule 28.02.2012
comment
ดูสิ่งนี้: khason.net/blog/   -  person Ignacio Soler Garcia    schedule 28.02.2012
comment
มีโพสต์ที่น่าสนใจที่นี่ อาจเป็นเพียงสิ่งที่คุณกำลังมองหา   -  person karlphillip    schedule 19.03.2012


คำตอบ (2)


เนื่องจาก Vista Windows รองรับการตั้งค่าสถานะ PIXELFORMATDESCRIPTOR ใหม่: PFD_SUPPORT_COMPOSITION หากตั้งค่าสถานะนี้ บริบท OpenGL ที่สร้างขึ้นจะรวมเข้ากับระบบองค์ประกอบเดสก์ท็อป:

http://msdn.microsoft.com/en-us/library/cc231189(v=prot.10).aspx

person datenwolf    schedule 28.02.2012

ไม่รับประกันว่าจะได้ผลเลย หน้าต่าง OpenGL จะไม่ถูกรวมเข้ากับความโปร่งใส WPF ไม่ว่าจะอยู่ด้านล่างหรือสูงกว่า มันอาจจะได้ผลในบางครั้ง แต่ก็ไม่จำเป็นต้องทำ

person Nicol Bolas    schedule 28.02.2012
comment
สามารถเปิดใช้งานการรวมคอมโพสิตได้ ซึ่งทำได้ผ่านการตั้งค่าสถานะ PIXELFORMATDESCRIPTOR ใหม่ - person datenwolf; 28.02.2012
comment
ประการแรก นั่นเพียงประกอบกับสิ่งของที่อยู่ด้านหลังเท่านั้น ไม่ใช่อยู่ด้านบน ประการที่สอง ฉันไม่เห็นสิ่งที่เทียบเท่าใน wglChoosePixelFormatARB ซึ่งก็คือ ที่ซึ่งคนส่วนใหญ่ได้รับรูปแบบพิกเซลมา มิฉะนั้น คุณจะไม่สามารถใช้เฟรมบัฟเฟอร์ sRGB หรือการสุ่มตัวอย่างหลายรายการได้ - person Nicol Bolas; 28.02.2012
comment
@datenwolf: และประการที่สาม ไม่มีการรับประกันว่า PFD_SUPPORT_COMPOSITION จะไม่ปิดการเร่งด้วยฮาร์ดแวร์หรือบังคับให้ใช้ไดรเวอร์ Microsoft GL ไม่มีการรับประกันว่าจะเป็นเช่นนั้น แต่ฉันต้องการข้อมูลเพิ่มเติมก่อนที่จะพยายามทำการเปลี่ยนแปลงดังกล่าว - person Nicol Bolas; 28.02.2012