แอปพลิเคชันของฉันมี OpenGL Engine ในหน้าต่างที่โฮสต์ WPF ฉันสร้างวิดเจ็ตแบบกึ่งโปร่งใส (เป็นวัตถุ Window) ที่ควรแสดงเนื้อหาเหนือหน้าต่าง OpenGL บางครั้งเมื่อแอปพลิเคชันประมวลผลข้อมูล พื้นหลังวิดเจ็ตจะกลายเป็นสีดำ (ดูภาพที่แนบมา) มีใครรู้บ้างว่ามันคืออะไร ฉันจะแก้ไขปัญหานี้ได้อย่างไร
หน้าต่างโปร่งใสเหนือ OpenGL
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
สามารถเปิดใช้งานการรวมคอมโพสิตได้ ซึ่งทำได้ผ่านการตั้งค่าสถานะ PIXELFORMATDESCRIPTOR ใหม่
- person datenwolf; 28.02.2012
ประการแรก นั่นเพียงประกอบกับสิ่งของที่อยู่ด้านหลังเท่านั้น ไม่ใช่อยู่ด้านบน ประการที่สอง ฉันไม่เห็นสิ่งที่เทียบเท่าใน wglChoosePixelFormatARB ซึ่งก็คือ ที่ซึ่งคนส่วนใหญ่ได้รับรูปแบบพิกเซลมา มิฉะนั้น คุณจะไม่สามารถใช้เฟรมบัฟเฟอร์ sRGB หรือการสุ่มตัวอย่างหลายรายการได้
- person Nicol Bolas; 28.02.2012
@datenwolf: และประการที่สาม ไม่มีการรับประกันว่า PFD_SUPPORT_COMPOSITION จะไม่ปิดการเร่งด้วยฮาร์ดแวร์หรือบังคับให้ใช้ไดรเวอร์ Microsoft GL ไม่มีการรับประกันว่าจะเป็นเช่นนั้น แต่ฉันต้องการข้อมูลเพิ่มเติมก่อนที่จะพยายามทำการเปลี่ยนแปลงดังกล่าว
- person Nicol Bolas; 28.02.2012