我想在GLSL着色器中模擬平面着色。通常我會通過傳遞正常的flat
限定符來防止片段着色器中的插值。 但是,flat
在GLSL 120上不可用。模擬GLSL中的GLSL平面限定符120
如何在不復制頂點數據的情況下模擬它? (這是而不是過早優化,而不是驗屍。)
我想在GLSL着色器中模擬平面着色。通常我會通過傳遞正常的flat
限定符來防止片段着色器中的插值。 但是,flat
在GLSL 120上不可用。模擬GLSL中的GLSL平面限定符120
如何在不復制頂點數據的情況下模擬它? (這是而不是過早優化,而不是驗屍。)
如果沒有直接的硬件支持(大概如支持GLSL 1.30+所示),您無法完全模擬flat
。以前的版本只提供全或無:所有屬性都是插值的,或者沒有。這就是glShadeModel
所做的。
對於三角形的每個頂點傳遞相同的法線。
或者看看glShadeModel(GL_FLAT)
是否影響gl_Normal
內置屬性。
對不起:我忘了在提問中提到一個要求。固定。 – pmr 2012-03-15 15:31:01
這是一個相當重要的需求:) – genpfault 2012-03-15 15:52:42
'glShadeModel'影響所有(至少大部分)內置屬性。但是這會給我錯誤的法線,如果相鄰三角形之間的角度很大,這會產生很大的影響。 – pmr 2012-03-15 15:56:56