フレームは、カメラからYUV420形式である可能性が最も高いです。そうでない場合は、フラグメントシェーダーを使ってオンザフライでRGBに変換するための他の数式を見つけることができます。
#ifdef GL_ES
precision mediump float;
#endif
uniform sampler2D u_texturey;
uniform sampler2D u_textureu;
uniform sampler2D u_texturev;
varying vec2 v_texcoord;
varying vec4 v_colorout;
void main(void)
{
float y = texture2D(u_texturey, v_texcoord).r;
float u = texture2D(u_textureu, v_texcoord).r - 0.5;
float v = texture2D(u_texturev, v_texcoord).r - 0.5;
vec4 rgb = vec4(y + 1.403 * v,
y - 0.344 * u - 0.714 * v,
y + 1.770 * u,
1.0);
gl_FragColor = rgb * v_colorout;
}
YUVはそう彼らのテクスチャユニットにそれらそれぞれのアップロード3面に来て、GPUは残りを行います。ここに私は現在、YUV420に使用するフラグメントシェーダです。
他にアンチエッシング、ちょうだい。
EDIT:
使用GL_LUMINANCE代わりに、それらの平面形式でテクスチャデータのそれぞれをアップロードするためGL_RGBA。
フレームがカメラからのものである場合、フレームは通常YUV形式です。フラグメントシェーダをレンダリングするために、フラグメントシェーダを適用することができます。 – WLGfx
したがって、私はそれらをTEXTURE_2Dとしてレンダリングすることができます。 @WLGfx、これについて深く読んでもらえますか? –