你并没有使用sampler2D
时间: 2024-03-09 08:46:56 浏览: 134
非常抱歉,我的回答有误。在片段着色器中,使用sampler2D类型的采样器处理外部视频流是不正确的,正确的方式是使用samplerExternalOES类型的采样器。因为外部视频流使用的纹理类型是GL_TEXTURE_EXTERNAL_OES。
以下是一个简单的片段着色器示例,用于将外部视频流纹理映射到一个平面上:
```
#extension GL_OES_EGL_image_external : require
precision mediump float;
varying vec2 vTexCoord;
uniform samplerExternalOES sTexture;
void main() {
vec4 color = texture2D(sTexture, vTexCoord);
gl_FragColor = color;
}
```
其中,samplerExternalOES类型的采样器sTexture绑定到纹理单元GL_TEXTURE0上,纹理坐标由顶点着色器传递到片段着色器中的varying变量vTexCoord中,texture2D函数用于采样对应的纹理颜色。需要注意的是,需要在代码中将外部图像流与OpenGL ES中的纹理关联起来,例如使用SurfaceTexture类实现。
阅读全文