2010-12-22 67 views

回答

1

我假設你可以計算點積。所以只需乘以另一個包含(0,0,0,1)的vec4即可。

編輯:但是,你確定你不能簡單地使用.w?我發現的所有文檔和示例都說可以。

4

我認爲你可能誤讀了規範 - 閱讀單個組件完全有效。 GLSL甚至允許隱式排列和原始組件的組合,例如,

lowp vec4 someVector; 

// someVector.xy is a lowp vec2 containing the first two scalars from someVector 
// someVector.zwx is a lowp vec3 containing the third, fourth and first scalars in that order 
// someVector.w is a lowp float containing the fourth scalar 

例如,我使用的片段着色器:

void main() 
{ 
    lowp vec4 srcPixel = texture2D(tex2D, texCoordVarying); 
    lowp vec4 yuvPixel = rgbToYuv * srcPixel; 

    yuvPixel.r *= 3.0; 

    gl_FragColor = yuvToRgb * yuvPixel; 
} 

與合適的基質和varyings提高紋理三倍的亮度。