簡體   English   中英

如何將QImage從C ++發送到Qt3D實體到QML以將其用作紋理?

[英]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次,並且該程序應該在同一時間執行其他操作。

有沒有辦法做到這一點?

您可以在Qt3D中查看我在背景圖像中的實現

我實現你所尋找的方法是使用QTextureMaterialQTexture2DQPaintedTextureImage 我必須在繪制之前翻轉圖像,這就是我將QPaintedTextureImage子類QPaintedTextureImage的原因,但這也可能就是你所需要的。 不像我那樣從磁盤加載紋理,您可以將子類上的QImage設置為屬性。 您只需要使C ++類可用於QML並將其設置在您的平面上(也許您甚至可以直接使用PaintedTextureImage並以JavaScript樣式語言編寫圖像PaintedTextureImage )。

您可以將QPaintedTextureIage添加到QTexture2D ,然后將結果設置為QTextureMaterial上的QTextureMaterial 不過,我不確定這是否會產生最佳性能。

您也可以嘗試按照這些步驟進行操作,但它們似乎更復雜一些。 這意味着您必須實現自己的QAbstractTextureImage版本並返回相應的QTextureImageDataGeneratorPtr 您可以查看來源以獲得更好的理解。

暫無
暫無

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

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