2012-01-07 156 views
10

每當我向項目的資源中添加一個新的.fsh或.vsh OpenGL ES 2.0着色器文件時,該文件將被添加到它不屬於的編譯源構建階段。然後我必須手動將其從該階段中刪除,然後將其手動添加到「複製包資源」構建階段。如何將.fsh/.vsh着色器文件添加到Xcode,以便它們自動添加到Copy Bundle Resources階段?

有什麼辦法可以告訴Xcode自動將擴展名爲.fsh和.vsh的文件添加到Copy Bundle Resources構建階段?

或者是否有可能創建一個構建規則,它具有與將着色器添加到複製包資源構建階段相同的效果?

我更喜歡一種適用於Xcode項目/工作區所有用戶的解決方案,而不是每個Xcode用戶都必須單獨播放的設置或系統更改。

+0

我不知道答案了我的頭頂,但我的蜘蛛感覺告訴我答案可能在於項目的「構建規則」部分。 – 2012-01-07 12:15:04

+0

我也這麼認爲,但沒有運氣。要麼我得到「多個構建命令」或「沒有規則來處理文件」的警告。即使我將fsh/vsh文件的文件類型設置爲OpenGL着色語言源,使用「使用PBXCp的GLSL源文件」規則的最合理的解決方案也不起作用。 – LearnCocos2D 2012-01-07 13:00:25

+0

我有一個自制的圖形庫,我分享項目之間。我想將代碼和着色器放在一個文件夾中,讓Xcode找出哪些是源文件,哪些是每次將庫導入新項目時的資源。 – 2012-07-05 11:53:55

回答

8

我的解決方法是,我去文件>新建文件>其它>空文件,並將其命名爲shader.vertshshader.fragsh

我猜Xcode會自動添加帶點3/4擴展名的文件來編譯階段。

而如果你錯過了語法高亮,更改文件類型爲「OpenGL着色語言源」: Xcode change file type

+0

這不適合我,我也不想只爲這種情況重命名現有的源文件。我使用了LearnCocos2D提到的put-them-in-a-folder和add-to-project-via-folder-reference方法。 – 2012-03-26 02:24:14

+0

@jd。是的,我也不會在意重命名所有現有的代碼,這種解決方法只有在開始一個新項目時纔有用,同時我希望蘋果解決這個問題,因爲他們的示例代碼中使用了.vsh和.fsh擴展名每個人都會喜歡,包括我:) – chunkyguy 2012-03-26 20:53:44

+1

不要再認爲這個修復是必要的,在XCode 5.1.1上''.vsh'和'.fsh'文件會自動添加到'Copy Bundle Resources'中 – aledalgrande 2014-05-25 20:31:45

9

以下是我找到的解決方法。如果任何人有任何其他解決方案,我仍然會很感激答案。

你做些什麼來讓着色器進入複製包資源構建階段自動簡直是把所有的着色器在一個共同的文件夾(或者文件夾樹)。我將文件夾命名爲「着色器」。然後,在添加「着色器」文件夾時,請選擇爲任何添加的文件夾創建文件夾引用

作爲文件夾引用,文件自動被認爲是Xcode的Bundle Resources。您只需要小心,不要在文件夾中放置任何不需要的文件,分別在發佈版本之前清理文件夾。另外加載着色器需要使用着色器文件的路徑,即「Shaders/Examples/Blur.fsh」。