2012-11-24 182 views
2

我在這裏通過OpenGL教程工作:OpenGL-Tutorial.org,並希望使用QTCreator和CMake構建示例。在QTCreator CMake項目的項目窗格中包含GLSL文件

打開根目錄CMakeLists.txt文件打開項目,然後構建/運行正確(在遵循網站上的說明之後),但片段和頂點文件不會顯示在項目窗格中。我嘗試將它們重命名爲.frag.vert.glsl,但沒有任何效果。如果我從文件夾中拖動這些文件,它們將以正確的語法高亮顯示在編輯窗格中打開。

如何讓這些文件顯示在項目窗格中?


我在Ubuntu 20.04上試過QTCreator軟件包和最新的sourceforge源代碼。

+0

他們也許不應該。它們在運行時加載並編譯;他們不應該成爲項目本身的一部分。 –

+0

如果有其他人來到這裏 - 我使用了GLFW,這是王牌。 – derekdreery

回答

4
file(GLOB RES_FILES *.frag *.vert *.glsl) 

add_executable(exe_name ${RES_FILES} ${C/CPP FILES}) 
+1

如果着色器文件不在cmakelist.txt文件夾中,並且未添加常規源文件,則爲+1或文件(GLOB_RECURSE RES_FILES * .frag * .vert * .glsl)add_executable(exe_name $ {RES_FILES})。 – steventaitinger

0

您可以將着色器文件添加爲.pro文件中的其他文件。

OTHER_FILES += \ 
    simple.frag \ 
    simple.vert 

另外,您應該考慮爲着色器文件使用QT資源管理。我最近在Qt中創建了一個簡單的OpenGL 3.2示例項目,該項目還展示瞭如何使用Qt對着色器文件進行資源管理。該項目可在此處獲得:https://github.com/mortennobel/QtOpenGL3.2Core

警告:該項目僅在Windows和OS/X上測試過。

+0

我沒有.pro文件,因爲我使用CMake來編譯程序,而不是qmake。 – derekdreery

1

另一種方法包括使用cmake你的Qt項目着色器文件是通過CMake的命令qt5_add_resources。當使用qmake時,One of the Qt's examples也一樣。對於我的應用程序,我發現將着色器文件包含爲資源會更實用。

所以,對於這一點,你就必須準備一個資源文件,例如,Shaders.qrc,並添加有您要使用的所有着色器文件,如:

<RCC> 
    <qresource prefix="/"> 
     <file>Stroke.frag</file> 
     <file>Stroke.geom</file> 
     <file>Stroke.vert</file> 
    </qresource> 
</RCC> 

然後在CMakeLists.txt,加資源文件:

qt5_add_resources(SHADER_RSC_ADDED 
    Shaders/Shaders.qrc 
) 

並把它添加到可執行文件(或庫):

add_executable(${PROJECT_NAME} 
    ${PROJECT_SRCS} 
    ${SHADER_RSC_ADDED} 
) 

重新打造後,項目樹看起來象下面這樣:

Added shaders as qrc file