问题标签 [alphablending]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3313 浏览

performance - 处理 OpenGL 中的 Alpha 混合以获得更好的性能

由于混合会影响我们游戏的性能,因此我们尝试了几种混合策略来创造混合的“幻觉”。其中之一是每隔奇数帧绘制一个精灵,导致精灵有一半的时间是可见的。效果倒是不错。(顺便说一下,您需要适当的帧速率,否则您的精灵会明显闪烁)

尽管如此,我想知道在避免混合方面是否有任何好的见解,以便在不影响(太多)视觉体验的情况下改善整体性能。

0 投票
1 回答
464 浏览

opengl - 如何混合一个已经有纹理的四边形

我做了一个四边形,上面有很好的纹理。纹理具有 Alpha 通道 (RGBA)。我用纹理替换了四边形(GL_REPLACE),所以现在我有一个带有(半)透明像素的广告牌。

到目前为止,没有问题。

但是现在我想混合整个广告牌,所以它的整体不透明度发生了变化

我该怎么做?

0 投票
11 回答
11289 浏览

iphone - 我需要一个图形编辑器来创建具有 alphatransparency 的 PNG 文件

不幸的是,Photoshop 目前是我可以用来创建具有 alphatransparency 的 PNG 文件的唯一图形编辑器。

我真的很讨厌它。但我需要它。但是买不起。

Pixelmator 看起来很好,但它一次又一次地崩溃。在我全新的 MacBook Pro 上。真的,这不是一个选择。

Gimp:它在启动后立即崩溃。而且我真的不喜欢这个 X11 的东西。不适用于我的 mac。

Gimpshop:同样的问题。

除了 Opera 浏览器、XCode 和 iWork,我没有安装任何东西。

那么:还有什么可以帮助我的呢?

我通常有 JPEG 图像,我需要在该图像中剪切一个对象并保存为具有 alphatransparency 的 PNG。我需要在 alpha chanel 中进行一些漂亮的蒙版编辑,使其在背景中看起来很平滑。

你为你的 iPhone 应用程序使用什么工具来做到这一点?

0 投票
2 回答
232 浏览

c# - 将图像保存到数据库

我可以使用下面的代码将图像保存到数据库,将其流式传输到字节数组,但是当它回来时,它已经失去了图像周围的 alpha 混合并显示出块状的蓝色边框。

怎样才能把原图放回去?

0 投票
3 回答
54722 浏览

math - 如何通过指定 alpha 混合量来计算 RGB 颜色?

我正在编写一个颜色选择器,它可以从您在屏幕上指向的任何位置获取像素 RGB 值。我还希望可以选择指定我选择的颜色已经具有 alpha 值。我只是想知道如何计算结果颜色。

例如:

生成的像素颜色为 240,247,249,但我知道原始颜色的不透明度为 10%,并且位于白色 (255,255,255) 背景之上。计算出原始 RGB 值的计算方法是什么?

0 投票
3 回答
2379 浏览

c++ - 有人有一个优化的功能来通过 alpha 预乘位图吗?

GDIPlus 混合函数使用 alpha 位图的预乘 rgb 通道来提高效率。然而,通过 alpha 进行预乘是非常昂贵的,因为您必须逐个处理每个像素。

它似乎是 SSE 组装的一个很好的候选者。这里有人想分享它的实现吗?我知道这是一项艰苦的工作,所以这就是我问的原因。我不是想偷你的工作。如果可以的话,你会得到我所有的考虑来分享这个。

编辑:我不想通过软件进行 alpha 混合。我正在尝试将图像中每个像素的每个颜色分量与其 alpha 预乘。我这样做是因为 alpha 混合是通过以下公式完成的:dst=src src.alpha+dst (1-dst.alpha) 但是 AlphaBlend Win32 函数确实实现了 dst=src+dst(1-dst.alpha)优化原因。要获得正确的结果,您需要在调用 AlphaBlend 之前 src 等于 src*src.alpha。

因为我对汇编知之甚少,所以我会花一些时间来写,所以我问是否有人愿意分享它的实现。SSE 会很棒,因为在论文中,软件 alpha 混合的增益是 300%。

0 投票
1 回答
1913 浏览

delphi - AlphaBlend 子窗体

我正在寻找一种 AlphaBlend 子窗体的方法,如果可能的话,使用分层窗口,因为它后面会有交互式控件。

问题是我在常规 TForm 中有一个组件,它绘制多个可视层(绘图、图片......)。在某些时候我需要在这个表单上(就地)实例化一个编辑器控件,这个控件将涉及我的控件之外的各种标准输入控件(编辑框、复选框等),但是我想覆盖正在使用 Alpha 混合编辑的图层前面的图层(并WS_EX_TRANSPARENT使其点击通过)。

我首先想到的是为此使用子表单(无边界TForms 是组件的父级),并且效果很好,直到 AlphaBlended TForm 根本不进行 alphablend,但一旦成为父级就会变得不透明......

然后,我尝试取消 alphablended 表单的父级,将其设置为 fsStayOnTop,并通过对相关事件做出反应,将其保持在屏幕上的组件前面,这可行,但这并不是一个真正令人满意的解决方案:alphablended StayOnTop 表单是也在应用程序的其他模态和非模态形式之前,如果用户决定将它们移动到组件前面......

那么,关于让子表单成为字母混合的方式的任何其他想法?(或表现得像这样)

0 投票
1 回答
175 浏览

.net - GDI+ 中的一揽子 Alpha 组件

有没有办法可以设置影响所有后续 GDI/GDI+ 调用的 Alpha 值?换句话说,我希望为Graphics对象上的所有调用设置透明度。

(我正在寻找类似于*Transform函数如何影响Graphics它们被调用的对象的东西)

0 投票
2 回答
1549 浏览

c++ - 带有 Alpha 通道的闪烁子窗口

当绘制包含具有每像素 Alpha 通道的位图的子控件时,每当需要重绘它们时,我们就会得到相当多的闪烁。实际的混合工作正常。我找到了很多关于减少闪烁的信息(例如这个问题这个网站),但我似乎找不到任何特别适用于这种情况的信息。

例如,我有一个带有几个不同位图的按钮,这些位图根据按钮的状态进行了 alpha 混合和 blitted 到窗口。当它们的状态发生变化并且我需要绘制不同的位图时,我需要先重新绘制背景,否则它会与前一个状态位图留下的像素混合。这是我得到一些闪烁的地方,我偶尔会得到一些背景撕裂。

让顶级父窗口绘制位图背景而不是纯色,以及让子控件重叠的可能性使问题变得更加复杂;只是将基础颜色乘以孩子的位图是不可能的,就像使用WS_CLIPCHILDREN.

由于窗口有位图背景,我将返回trueWM_ERASEBKGND以避免绘制将被覆盖的颜色。

当然,双缓冲似乎可以解决所有这些问题,但我无法让它正常工作。我已经WS_COMPOSITED为顶级窗口和WS_TRANSPARENT子窗口设置了。当需要使用新位图重绘子窗口时,我遇到了一些问题(很可能是我不理解在这种情况下绘制顺序是如何工作的):

  • 如果我调用InvalidateRect()并传递子句柄,子窗口确实被重绘,但背景没有被重绘,因此像素相互叠加,混合在一起。
  • 如果我调用InvalidateRect()并传入句柄,矩形由子窗口的尺寸组成,则背景会被重绘,但子窗口不会。
  • 如果我同时执行上述两项操作,那么背景和子窗口都会被重绘,它看起来完全符合我的要求——除了这样做,我设法让它再次闪烁(这不是这并不令人惊讶,因为这样调用两次似乎非常骇人听闻InvalidateRect(),因为我猜每次调用都可能导致缓冲区翻转,这违背了目的)。

我得出的结论是,我真的不明白我需要如何修改我的程序来处理双缓冲,或者双缓冲是否有助于解决这种情况。我觉得它肯定会,但我不太明白我需要如何修改东西才能让所有东西再次正常播放。

0 投票
1 回答
1045 浏览

opengl - 用于 Alpha 透明度的 AMD RenderMonkey GLSG 配置

我正在尝试使用 RenderMonkey 设计一个使用 Alpha 透明度的 GLSL 着色器,并且 RenderState 编辑器不使用我在 OpenGL 中使用的相同术语。谁能建议如何将其配置为简单的 Alpha 透明度?