2012-03-15 44 views
3

我想在GLSL着色器中模擬平面着色。通常我會通過傳遞正常的flat限定符來防止片段着色器中的插值。 但是,flat在GLSL 120上不可用。模擬GLSL中的GLSL平面限定符120

如何在不復制頂點數據的情況下模擬它? (這是而不是過早優化,而不是驗屍。)

回答

2

如果沒有直接的硬件支持(大概如支持GLSL 1.30+所示),您無法完全模擬flat。以前的版本只提供全或無:所有屬性都是插值的,或者沒有。這就是glShadeModel所做的。

1

對於三角形的每個頂點傳遞相同的法線。

或者看看glShadeModel(GL_FLAT)是否影響gl_Normal內置屬性。

+0

對不起:我忘了在提問中提到一個要求。固定。 – pmr 2012-03-15 15:31:01

+3

這是一個相當重要的需求:) – genpfault 2012-03-15 15:52:42

+0

'glShadeModel'影響所有(至少大部分)內置屬性。但是這會給我錯誤的法線,如果相鄰三角形之間的角度很大,這會產生很大的影響。 – pmr 2012-03-15 15:56:56