2015-04-20 2 views
1

У меня есть следующий код в стандартном OpenGL шейдер:Порт GLSL матрица для GLSL ES

vec3 I4, C1, A0, G5; 
mat3 yuv_weighted; 

vec4 i4 = yuv_weighted[0] * mat4x3(I4, C1, A0, G5); 

Как я могу преобразовать его в OpenGL ES 2.0, которая не поддерживает прямоугольные матрицы?

ответ

0

Вы можете попробовать что-то вроде этого:

vec3 I4, C1, A0, G5; 
mat3 yuv_weighted; 

vec4 i4 = vec4(dot(yuv_weighted[0], I4), dot(yuv_weighted[0], C1), 
       dot(yuv_weighted[0], A0), dot(yuv_weighted[0], G5)); 

Или даже

vec4 i4 = vec4(yuv_weighted[0]*mat3(I4, C1, A0), dot(yuv_weighted[0], G5)); 

хотя первая версия может быть более эффективным (не уверен).

Смежные вопросы