簡體   English   中英

使用Java 7的Linux上的立體聲問題-將組件添加到父組件后如何更改其GC

[英]Stereo problems on Linux using Java 7 - how to change the GC of a component after it has been added to a parent

我有一個包含在JPanel中並顯示在屏幕上的AWT畫布。 我目前使用Java 7 update 45並在Red Hat 6上運行。

當用戶請求具有openGL立體聲功能的畫布時,我將刪除現有的畫布,創建一個新的畫布,該畫布選擇一個立體視覺效果並在畫布上設置適當的GraphicsConfiguration。 問題在於,隨着Java 7中的新更改,當將此畫布重新添加到JPanel時,Jpanel的GraphicsConfiguration(GC)會覆蓋Canvas的GraphicsConfiguration。

這發生在java.awt.Container.addImpl()中 ,在該處它調用包范圍的方法Component.setGraphicsConfiguration()

我目前在此包范圍方法上使用Reflection,以從我的代碼中調用該方法並更改畫布上的GC。

有沒有比這更好的解決方案了? 換句話說,如何在將組件添加到父組件后更改其GC?

我建議您根本不要更改GC。 而是嘗試創建具有立體聲功能的GC,並允許回退到非立體GC。 如果成功,則啟用立體渲染路徑和菜單項。

在以下錯誤報告中報告了JDK 7 AWT更改引起的立體回歸並進行了處理: https ://bugs.openjdk.java.net/browse/JDK-8036875-Component.setGraphicsConfiguration()破壞了某些3D應用程序

“ babor”對Java3D Canvas3D用戶的解決方法是重寫Canvas3DarchitectureChanged方法,並使用反射更新最頂層的組件以使用立體圖形配置。 http://forum.jogamp.org/Java3D-stereo-tp4029914p4031792.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM