[英]Qt/QML : Send QImage From C++ to QML and Display The QImage On GUI
[英]How to send QImage to Qt3D Entity from C++ to QML for using it as texture?
我需要在3D場景中更改平面的紋理。 在C ++的BackEnd類中,我創建了一個新的QImage,用於在紋理上設置它。 我想將它作為信號發送到我的QML並將其分配給飛機材料屬性。
但看起來TextureMaterial等只能使用紋理文件的URL路徑。 我無法將我的圖像保存到硬盤驅動器中以將其用作URL路徑。 太長了。 我需要在一秒鍾內改變紋理20次,並且該程序應該在同一時間執行其他操作。
有沒有辦法做到這一點?
我實現你所尋找的方法是使用QTextureMaterial
, QTexture2D
和QPaintedTextureImage
。 我必須在繪制之前翻轉圖像,這就是我將QPaintedTextureImage
子類QPaintedTextureImage
的原因,但這也可能就是你所需要的。 不像我那樣從磁盤加載紋理,您可以將子類上的QImage
設置為屬性。 您只需要使C ++類可用於QML並將其設置在您的平面上(也許您甚至可以直接使用PaintedTextureImage
並以JavaScript樣式語言編寫圖像PaintedTextureImage
)。
您可以將QPaintedTextureIage
添加到QTexture2D
,然后將結果設置為QTextureMaterial
上的QTextureMaterial
。 不過,我不確定這是否會產生最佳性能。
您也可以嘗試按照這些步驟進行操作,但它們似乎更復雜一些。 這意味着您必須實現自己的QAbstractTextureImage
版本並返回相應的QTextureImageDataGeneratorPtr
。 您可以查看來源以獲得更好的理解。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.