簡體   English   中英

一起使用SDL,OpenGL和Qt

[英]Using SDL, OpenGL and Qt together

一段時間以來,我一直在使用SDL編寫3D引擎,最近又實現了一個編輯器,該編輯器可以針對Im生成的引擎類型導出優化的格式。 現在,編輯器非常簡單,可以隨處移動對象,並可以更改其紋理和模型。 截至目前,我將SDL與OpenGL配合使用來渲染所有內容,但是我想將Qt用於編輯器的GUI部分,以使它在每個平台上看起來都是本機的。 到目前為止,我的工作非常好,我正在SDL應用程序內部運行QApplication,因此它基本上只打開2個窗口,一個使用SDL和OpenGL,另一個使用Qt。 經過一些研究,我發現您可以手動更新QApplication,從而完全消除任何線程問題,並且一切正常。 以防萬一您很難想象這一點,下面是一張圖片:

在此處輸入圖片說明

我的目標是將這些窗口合並為一個,因為在較小的屏幕(如筆記本電腦的屏幕)上,很難跟蹤我最終擁有的所有不同窗口。 我知道有一種使用OpenGL渲染到Qt的方法,但是這可以與SDL集成嗎? 如果啟用了編輯器,我是否需要放棄使用SDL窗口並使用QT窗口? 需要澄清的是,當引擎不在編輯器模式下時,它將不使用Qt,而僅使用SDL,因此最佳情況下,我不需要這樣做。

刪除SDL部分。 您有Qt,它也可以完成SDL的所有工作。 只需繼承一個QGLWidget並使用它即可。

您可以將游戲和編輯器的流程分開,但仍將它們作為同一應用程序的一部分。

只需在希望游戲作為Qt一部分運行的窗口中生成窗口,至少在窗口中,然后可以將窗口句柄傳遞給游戲,並確保在設置游戲的時間,而不是自己在Windows中創建窗口通過SDL並將opengl上下文綁定到它,您實際上可以綁定到現有句柄。

我相信有一些技巧需要注意,例如輸入焦點(我使用DirectX進行了測試,但使用SDL可能與此類似)。 問題在於,前台模式對“根”窗口進行了一些愚蠢的檢查,對我而言,該窗口不是擁有opengl上下文的窗口,因此無法初始化。 但是后台模式有效。 現在,我考慮了一下,現在認為這是操縱桿,但是無論如何,這就是將所有內容合並在一起的方法。

暫無
暫無

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

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