问题标签 [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 回答
2534 浏览

c++ - 如何在 SDL 中进行硬件加速 Alpha 混合?

我试图找到在 SDL 中进行 alpha 混合的最有效方法。我不想回去重写渲染代码来改用 OpenGL(我读过 alpha 混合更有效),所以我想弄清楚如何从 SDL 的 alpha 中获得最大的收益混合。

我读到我可以从使用硬件表面中受益,但这意味着我必须全屏运行游戏。任何人都可以对此发表评论吗?或者其他关于 SDL 中 alpha 透明度的信息?

0 投票
1 回答
5075 浏览

iphone - OpenGL ES多纹理alpha混合问题

这可能是一个菜鸟问题,但是,我无法找到合适的答案:

我在 OpenGL ES 中有一个对象(实际上是 Blender 的 UV 映射导出),我想对其应用两个纹理。准确地说,我有一个类似地球的球体,我想向它添加两个纹理(一个白天和一个夜晚)。

我曾想过通过 alpha 映射,应该可以在运行时以编程方式淡化一个纹理并显示另一个纹理,以便我的地球仪成为地球的真实模拟。我有它背后的数学原理,即为对象的每个面创建 alpha-map 不是问题。

任何提示/指针如何实现这一点?

谢谢

0 投票
2 回答
518 浏览

flash - 变换 BitmapData 对象的单通道

我有一个带有 alpha 通道的 BitmapData 对象。我想知道在 ActionScript3 (FlashPlayer10) 中偏移 alpha 通道的最快方法。通过偏移,我的意思是在一个方向上移动该通道的所有像素(环绕图像边界),同时保持颜色通道不变。

有没有一种好方法可以将这种变换仅应用于一个通道?

0 投票
2 回答
9021 浏览

opengl - 如何让多边形抗锯齿工作?

我正在使用这些函数调用:

它不起作用,也不会渲染。

它不抗锯齿。

0 投票
1 回答
681 浏览

python - 线条不会在具有完全黑色纹理的屏幕外帧缓冲区上渲染

如果我有一个绑定了纹理的帧缓冲区,它只是带有完整 alpha 的黑色,我尝试在其上画一条线,即使该线具有完整的 alpha,它也不会渲染。我不傻,所以线条肯定不是黑色的。如果纹理是白色的,那么线条会突然正确渲染,就好像它后面的纹理颜色会影响线条的颜色,这是愚蠢的。只有线条具有透明度,它们后面的颜色才应该有效果。

我正在使用线条平滑。我使用以下混合功能,这显然是要使用的功能,

我该如何解决?

大量代码:

对于画线:

设置帧缓冲对象:

纹理的创建:

使用帧缓冲对象在屏幕或 Surface 对象的纹理上绘制大量线条的函数:

这就是我认为重要的一切。除了初始化代码:

0 投票
3 回答
5363 浏览

python - OpenGL中的透明FrameBuffer背景

我想使用 glClear 和 glClearColor 用包括 alpha 透明度的颜色填充帧缓冲区。但是,当绑定到渲染到屏幕的纹理时,帧缓冲区始终呈现为不透明。

我希望渲染到帧缓冲区的所有内容都保持透明度。我只是想改变背景。

请参阅以下代码:

surface.background_alpha 应该是帧缓冲背景的透明度。这是我的初始化代码:

代码有点乱,因为我做了很多调整才能让事情正常工作,而且我还没有把所有的东西都整理好。

如果有人可以帮助我,我非常感谢你。

0 投票
0 回答
1043 浏览

iphone - iPhone OpenGL ES alpha 在模拟器中混合为白色,在 iPhone 上混合为灰色

我的问题是在 iPhone 上使用 OpenGL ES 1.1 进行不正确的 alpha 混合。与许多其他人的问题不同,不涉及纹理。

我在浅蓝色背景上画了几十个白色的小圆圈。每个圆圈都绘制为 GL_POINT。我正在制作从 alpha=1.0 到 alpha=0.0 的渐变动画。一切都在 iPhone 模拟器中完美运行。这是 alpha 接近 0 时动画最后一帧的快照:[已删除]

当我将它实际安装在原始的 2G iPhone 上时,就会出现问题。当 alpha 接近零时,每个点都呈现为深灰色圆圈,而不是呈现为微弱的白色圆圈。这是错误的 iPhone 渲染的快照:[已删除]

我使用的一些相关调用是:

这都是二维的,具有正交视图。

我发现了这个类似的问题,并确认 CAEAGLLayer.opaque 设置为 TRUE。

(对不起,非超链接图像。新的用户限制......)

0 投票
1 回答
1165 浏览

c++ - 使用 gdi+ 在 hdc 上绘图会导致预乘 alpha 位图吗?

我正在尝试使用 GDI+ DrawImage 在 CImage 对象上绘制一些位图。生成的 CImage 位图似乎被 alpha 预乘,但我在 msdn 文档中找不到任何提及。

当我在 CImage HDC 上使用 DrawImage 进行绘制时会发生什么?

0 投票
1 回答
4697 浏览

iphone - 是否可以实现 MAX(As,Ad) openGL 混合?

我正在开发一款游戏,我想在网格上的一系列精灵下创建阴影。阴影比精灵本身大,并且精灵是动画的(即移动和旋转)。

我不能简单地将它们渲染到精灵 png 中,否则阴影会与相邻的精灵重叠。

我也不能简单地将阴影单独放在较低的图层上,因为当它们重叠时,它们会在它们的交叉处产生暗带。

这些精灵是动画的,因此整体渲染这些精灵是不可行的。

基本上,我希望精灵的阴影混合在一起,以使它们在设定的不透明度下最大化。例子:

在此处输入图像描述

我相信这相当于(Rs,Gs,Bs,Max(As,Ds))的openGL混合,我并不真正关心R,G和B,因为它在src中总是相同的颜色和夏令时。

但是,这不是有效的 openGL 混合模式。有没有一种简单的方法可以做到这一点,尤其是在 cocos2d-iphone 中?

我可以通过使阴影精灵不透明来近似这一点,然后将它们都应用于父精灵,并使父精灵的不透明度为 40%。但是,cocos2d 的工作方式只是将每个孩子的不透明度设置为 40%,而不是组合的精灵图像,这会导致相同的条纹。

0 投票
3 回答
21985 浏览

opengl - opengl - 与帧缓冲区的先前内容混合

我正在通过帧缓冲区对象渲染到纹理,当我绘制透明图元时,这些图元与在该单个绘制步骤中绘制的其他图元正确混合,但它们没有与帧缓冲区的先前内容正确混合。

有没有办法将纹理的内容与传入的新数据正确混合?

编辑:要求提供更多信息,我将尝试更清楚地解释;

我使用的混合模式是 GL_SRC_ALPHA、GL_ONE_MINUS_SRC_ALPHA。(我相信这通常是标准的混合模式)

我正在创建一个跟踪鼠标移动的应用程序。它绘制将前一个鼠标位置连接到当前鼠标位置的线,并且由于我不想在每一帧再次绘制线,我想我会绘制到纹理,从不清除纹理,然后只用它绘制一个矩形纹理上显示它。

这一切都很好,除了当我在纹理上绘制 alpha 小于 1 的形状时,它不能与纹理的先前内容正确混合。假设我在纹理上绘制了一些带有 alpha = .6 的黑线。几个绘制周期后,我在这些线上绘制一个 alpha = .4 的黑色圆圈。圆圈“下方”的线条被完全覆盖。虽然圆圈不是纯黑色(它与白色背景正确融合),但圆圈下方没有您所期望的“较暗的线条”。

但是,如果我在同一帧中绘制线条和圆圈,它们会正确融合。我的猜测是纹理与之前的内容不融合。就像它只与 glclearcolor 混合一样。(在这种情况下是 <1.0f, 1.0f, 1.0f, 1.0f>)