我一直在研究這個問題我有,我似乎無法理解它足夠好解決它,所以我想我不妨把它扔出去,智能束可能有一些想法。 :PGLKit的GLKBaseEffect和自定義着色器
基本上我一直在一個iPhone項目的同時,我擁有的奢侈品使用所有最新的框架和目標5.1。所以我一直在使用GLKit和GLKBaseEffect,它們對我來說工作得很好。我開始使用GLKBaseEffect而不是寫自己的着色器的原因是我不瞭解glsl。然而,這些要求變得更加精確,基本效應似乎不再削減。
因爲我已經做使用基數效應的影響,我寧願如果我能保持我的基數效應不變,但在上面添加GLSL型着色器,如果讓任何意義我所有的轉換。
我的舊方法看起來像這樣(這是在一個循環渲染所有對象,其中一個對象包含諸如變換,網格和其他一些不太重要的事情,例如紋理,材質等等。 )
ObjectBase *obj = [ResourceManager.shared getObjectNamed:name inScene:sceneName];
GLKMatrix4 modelview = effect.transform.modelviewMatrix;
effect.transform.modelviewMatrix = GLKMatrix4Multiply(effect.transform.modelviewMatrix, obj.transform);
[effect prepareToDraw];
[obj render];
effect.transform.modelviewMatrix = modelView;
在這裏,我們取一個對象來呈現和變換(即平移,旋轉和縮放)的對象,然後我們渲染它,那裏的渲染本身獲取該對象的網格,綁定緩存和渲染。
到目前爲止這麼好。
但是我想要做的事情是,在[obj render];
調用期間,我希望該對象也可以像glUseProgram(someProgram);
那樣添加更專用的着色器代碼。
我想人們可能認爲我想使用基數效應爲我的頂點着色器,想用我的片段着色「正常」的着色器。至少這就是我想我想要做的。
我一直在嘗試一些東西。
我試着在它上面創建片段着色器和glUseProgram
,但是它表示在設置和編譯它時需要一個頂點和一個片段着色器。我也試圖創建一個空的頂點着色器,這個着色器效果並不好,我不知道會發生什麼,但我猜測它推翻了基本效果。
我扶着走向,到底會接受,它可能是最好的拋出了基數效應,只是寫我自己的着色器的所有道路。我只是覺得在窗外工作很多,所以我想看看我可以節省多少錢。
我也明白,我的着色器的理解是給我最多的問題的一部分,所以請耐心等待與事實。
我似乎已經完全忘記了實際上說謝謝你提供的鏈接確實拓寬了我的理解。我很高興我問,即使在問的時候我覺得我根本不知道我實際上做了什麼要求......這麼好的工作搞清楚了;)謝謝。 – qrikko
非常感謝。我很沮喪,我的着色器正在編譯和鏈接,但沒有輸出任何東西。去掉prepareToDraw的這個調用就行了。生活很好! – VaporwareWolf