在我的項目中,我使用「放棄」調用來執行自定義模板測試,該測試試圖僅在由模具紋理定義的指定區域繪製事物。下面是從片段着色器代碼:如何在片段着色器中進行自定義的模板測試
//get the stencil value from a texture
float value=texture2D(stencilTexture, gl_FragCoord.xy/1024.0).x;
//check if value equals the desired value, if not draw nothing
if(abs(value-desiredValue)>0.1)
{
discard;
}
此代碼的工作,但是從性能問題的困擾,因爲「取消」呼叫。有沒有其他方法可以通過GPU着色器來做到這一點?告訴我如何。
爲什麼你不能使用默認的模板測試(不在着色器中)?你會得到相同的結果。 – fen
「* alliterative *」我認爲你的意思是「另類」。此外,目前尚不清楚爲什麼您需要使用* stencil *紋理來執行此操作。或者爲什麼你認爲'discard'調用是一個性能問題(或者如果是性能問題,那麼問題比紋理訪問本身更糟糕)。 –
@NicolBolas:抱歉我的拼寫錯誤,在我的實驗中,我發現丟棄電話是一個性能問題,這也是[鏈接]報告(http://stackoverflow.com/questions/8509051/is-discard-bad-for -program-performance-in-opengl) – Sunf71