rgba缓冲区乘法(OpenGL)

时间:2013-03-04 01:36:10

标签: opengl multiplication rgba

我将解码后的图像保存为RGBA,并将像素存储到类型为

的缓冲区中
unsigned char *data1;

我有另一个缓冲区(相同大小480x720),包含另一组RGBA数据。

unsigned char *data2;

如何使用OpenGL对这两个缓冲区进行逐点乘法

例如为: 如果data1和data2是:
data1 =(a0,a1,a2,a3,a4,...)

data2 =(b0,b1,b2,b3,b4,...)

然后如何使用OpenGL执行以下操作?

data1 * data2 =(a0 * b0,a1 * b1,a2 * b2,a3 * b3,a4 * b4,...)

是否可以使用OpenGL执行此操作?

2 个答案:

答案 0 :(得分:1)

我不是一个沉重的openGL用户,所以我不能说它能做什么,不能做什么,但我可能会建议你看看你想要实现的OpenCV。使用OpenCV有很多可用的学生跟踪示例,并且有一些非常好的指南可以在嵌入式设备上编译openCV,如Beagleboard和Rasp Pi。

我认为openGL是一个绘图工具,openCV是一个处理工具。

openCV带有定义的矩阵类型,以及您想要做的许多矩阵运算。

http://opencv.willowgarage.com/wiki/

答案 1 :(得分:0)

您可以使用的简单片段着色器:

in vec2 tex_coords;
uniform sampler2d texture_a, texture_b;
out vec4 my_color;

vec4 a = texture(texture_a, tex_coords);
vec4 b = texture(texture_b, tex_coords);

my_color = vec4(a.r * b.r, a.g * b.g, a.b * b.b, 1.0);