原创 關於osg怎麼設置物體顏色的問題

osg設置物體顏色有兩種方式,第一種是直接設置頂點的顏色,第二種是設置材質的顏色。一般只選其中一種。   先說第一種,可以直接將每個頂點的顏色傳入Geometry中。     osg::ref_ptr<osg::Geometry> geo

原创 osg窗口界面添加了圖形,卻沒有圖形顯示的問題

在使用的過程中出現了一個問題。添加了一個View後,卻只有背景顯示,沒有圖形的顯示。 後來,將相機的設置放到圖形的設置之前才解決了問題。

原创 在qt的QOpenGLWidget開啓opengl的抗鋸齒

在QOpenGLWidget的構造函數添加下面幾句代碼即可 QSurfaceFormat surfaceFormat; surfaceFormat.setSamples(4);//多重採樣 setFormat

原创 opengl沒有glLineStipple 的情況下繪製虛線

在高版本的opengl沒有glLineStipple 這個函數。繪製虛線似乎有點束手無策了。實際上使用最簡單的GL_LINES的方式就能繪製虛線了。 比如繪製一條從(0, 0, 0)到(140, 140, 140)的線。首先需要將線分段成

原创 qt註釋類或者函數的方法

qt有一個方便註釋類或者函數的方法。只要在類或者函數的上面一行輸入“/**” + 回車鍵即可自動生成以下注釋: /** * @brief * @param * @return */  

原创 qt 同時開啓兩個opengl窗口關閉時出現的錯誤

當同時開啓兩個opengl窗口然後關閉的時候,程序總是輸出: Texture is not valid in the current context. Texture has not been destroyed 解決這樣的問題可以在繼承

原创 qt opengl 窗口變化時物體大小不變

可以重寫resizeGL函數,並在其中重新生成投影矩陣,如: //OpenGLWidget繼承QOpenGLWidget和QOpenGLFunctions_4_0_Core void OpenGLWidget::resizeGL(int

原创 c++函數返回引用的陷阱

這幾句代碼貌似沒有問題。實際上,在字面值字符串傳入const string&的時候發生了隱式轉換,生成了一個string的臨時值。返回的是此臨時值的引用。當代碼執行到cout時,臨時值已經被釋放。所以name是一個未定義的值。 函數返回

原创 qt的three.js偶爾獲取世界座標不正確的問題

當一個object3D對象的position或者rotation發生變化時,使用object3D對象的getWorldPosition()返回的世界座標可能不正確。因爲three.js的相對座標改變後世界座標默認不會自動更新,而是到了渲染

原创 qml使用three.js導入外界模型的問題

相比於網頁版的three.js,qt提供的three.js缺少了許多Loader。所以許多外界的3d模型無法直接導入。但是,qt提供的three.js是可以使用ObjectLoader直接導入json格式的3d模型的。所以只要想辦法把其他

原创 使用qt的three.js的FontLoader導入字體失敗的問題

本人在使用FontLoader導入字體時,出現了json解析錯誤的錯誤提示。對比了網頁版的three.js和qt版的three.js源代碼,發現json解析的語句不一樣。 qt版的是: onLoad( new THREE.Font( J

原创 關於Qt使用windeployqt打包exe後打不開的問題

如果使用到了Qt Quick,打包的命令記得要增加“--qmldir (加上Qt安裝路徑中QML文件夾的位置)”,如“windeployqt (exe文件名稱)  --qmldir D:\Qt\Qt5.9.6\5.9.6\mingw53_

原创 QML訪問本地或C++處理過的圖片

在QML中,訪問路徑跟C++有所不同。其默認訪問的是資源文件。如果要訪問本地路徑則需要加上“file:///”,如想訪問D盤的某張圖片可以這樣"file:///D:/圖片.jpg"。 如果想要將C++中的圖片傳遞給QML則要藉助庫中的QQ

原创 C++聯合體的作用——串口發送數據

    使用串口發送數據時,需要一個字節一個字節地發送,所以發送非char類型數據比較困難,比如發送一個int類型數據或者是一個double類型數據。這時,聯合體的作用就體現出來了。    聯合體中的各數據項使用的是同一塊內存。如果將一個