在 Android 上将 [灰度位图 * colorValue] 添加到屏幕的最快方法
我想要做的是将灰度 alpha 位图与 RGB 颜色值相乘,然后将生成的 RGB 位图附加地绘制到屏幕上,即在我想要的每个像素处:
p_new[r/g/b] = p_old[r/g/b] + colorValue[r/g/b] * grayscaleBitmapValue
我知道我可以构造一个中间 RGB 位图或纹理持有( colorValue[r/g/b] * GrayscaleBitmapValue),但如果可能的话,我宁愿避免这个浪费的步骤,因为每个 alpha 位图都会与相当多的不同颜色值相乘。
在 2D 或 OpenGL ES 中最快的方法是什么?
What I want to do is multiple a grayscale alpha bitmap with an RGB color value, and then draw the resulting RGB bitmap to screen additively, that is, at each pixel I want:
p_new[r/g/b] = p_old[r/g/b] + colorValue[r/g/b] * grayscaleBitmapValue
I know I can construct an intermediate RGB bitmap or texture holding (colorValue[r/g/b] * grayscaleBitmapValue), but I'd rather avoid this wasteful step if possible, because each alpha bitmap will be multiplied with quite a number of different color values.
What's the fastest way to do this in either 2D or OpenGL ES ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
对于 2D 绘图,如下所示设置 Paint 对象:
对于 OpenGL,片段着色器可能如下所示:
... 并调用 glBlendFunc(GL_ONE,GL_ONE) 进行加法混合。
For 2D drawing, set up your Paint object like this:
For OpenGL, your fragment shader could look like this:
... and call glBlendFunc(GL_ONE,GL_ONE) to do additive blending.