在进行VR视频播放开发的时候,看到如下一段opengl代码,一开始不知道为什么这样做,会产生什么效果。
首先是创建了一个纹理,该纹理除了边缘为半透明(58/255=0.23)外其它像素都是1:
void createVigTex() {
static const int scale = 6;
static const int width = 16 * scale;
static const int height = 9 * scale;
unsigned char buffer[width * height];
memset(buffer, 255, sizeof(buffer));
for ( int i = 0; i < width; i++ ){
buffer[i] = 58;
buffer[width*height - 1 - i] = 58;
}
for ( int i = 0; i < height; i++ ){
buffer[i * width] = 58;
buffer[i * width + width - 1] = 58;
}
CreateTexture2D(mTexVig, GL_LUMINANCE, GL_LUMINANCE, width, height, buffer);
}
然后使用如下fragment shader来绘制视频:
const char* vigTexFragShader =