问题标签 [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 投票
4 回答
2697 浏览

opengl-es - iPhone OpenGL ES:对 2D 游戏具有透明像素的纹理应用深度测试

目前,我为 2D 游戏开启了混合和深度测试。当我绘制我的纹理时,如果它们相交,“上部”纹理会删除下部纹理的一部分。显然,深度测试考虑了纹理的透明像素,如果它们相交,它会清除绘制的下部纹理的所有颜色。此外,alpha 混合渲染不正确。是否有任何类型的函数可以告诉 OpenGL 在深度测试中不包括透明像素?

0 投票
1 回答
1566 浏览

iphone - 如何优化多个全屏透明 iPhone OpenGL ES 层的绘制?

我正在尝试优化我的 iPhone OpenGL ES 应用程序。这是基于 GLSprite 和 GLPaint 示例应用程序。我已将 EAGLView 分解为一个基类,并将其子类化为 3 个不同的 OpenGL 视图以创建 3 个透明层。3 个 EAGLView 的显示父级是 UIView,而 UIView 是 UIWindow 的子级。我试图让它尽可能接近 60fps。我在这个网站上听到其他人说 iPhone 能够以 60fps 的速度绘制 50 个透明层,所以这令人鼓舞……

我正在做的是:

1) 使用与 GLPaint (renderLineFromPoint:toPoint:) 中相同的基于点精灵的函数绘制多达 9 条纹理线到图层 #1。用于此的纹理是 64x64,中间有一个 40x40 的圆圈,其余部分是透明的。

2) 将具有相同功能和纹理的单线绘制到第 2 层。

3) 将 9 个 128x128 纹理实例(一个 80x80 中心圆,其余透明)绘制到第 3 层。该层位于顶部。

第 1 层和第 3 层很少更改,并且每次调用 touchesMoved: 时,第 2 层都会更改(擦除全屏,重绘一行)。

最初我尝试在单个 EAGLView 中执行此操作,就像示例一样...基本上按顺序绘制所有 3 层的内容。然而,这太慢了。在我添加线条图(第 1 层和第 2 层)之前很好,但不幸的是,每次 touchMoved 绘制 10 条线会将帧速率减半。所以我尝试通过将它们分成层来优化它......仅在必要时绘制每个层一次。(每个手指移动绘制第 2 层)。这仍然不够快,我想是因为有很多透明度(每一层都需要显示出来;而且每个纹理绘制都需要混合)。

我不认为我在画很多……9个半透明的四边形和几条线很多吗?

那么,我注定要在这里吗?使用这么多的透明度会扼杀性能?或者有什么我错过的......非常感谢任何帮助!

0 投票
2 回答
556 浏览

python - 关闭 Pygame alpha

我有一个正在开发的电脑游戏,我想给用户一个选项来关闭 alpha 合成以提高速度。Pygame 不是到处进行检查,而是有一个全局选项来表示“不要使用 alpha”,这样它就会忽略我对 set_alpha 等的所有调用?

0 投票
1 回答
1703 浏览

c# - 使用 C# 在 Windows Mobile 中加载一个简单的半透明 PNG

我是 Windows Mobile 编程的新手。我想加载一个具有 Alpha 通道的 PNG 文件。在网上搜索了2天后,我仍然在第1方。有人可以帮我吗?我得到了一个使用包装器访问 AlphaBlend API 的示例。但是当我在 BlendingFunction 中设置 AC_SRC_ALPHA 标志时,它不会绘制任何东西。

0 投票
2 回答
2620 浏览

cocoa - 清除 NSImage 的 alpha 通道

可以通过分配一个每像素 32 位的临时位图,然后使用 for 循环清除 alpha 分量,最后再次将其转回 NSImage 来完成。

我怀疑可以使用 NSColor 和NSCompositingOperation的巧妙组合以更简单的方式完成。或者可能需要使用 drawAtPoint 将图像与自身合成。

我的代码看起来像这样。

注意:将 alpha 通道设置为 1 可以通过使用带有 NSCompositePlusLighter 的 blackColor 来完成。

清除 Alpha 通道的秘诀是什么?

0 投票
4 回答
7123 浏览

c++ - Direct3D 使用“乘法”混合模式和 Alpha 渲染 2D 图像

我正在尝试使用 Direct3D 复制 Photoshop 过滤器。我一直在阅读和谷歌搜索不同的渲染状态,我的效果几乎可以工作。问题是它忽略了纹理的 alpha 值。

这是解释这种情况的图像:

http://www.kloonigames.com/petri/stackoverflow_doesnt_allow_.jpg

我找到了一种解决方案,即保存没有透明度和白色背景的图像。但我对这个解决方案并不满意。问题是我真的需要使用 alpha 值。我想逐渐淡出图像。如果混合模式忽略 alpha 值,我将无法执行此操作。

所以问题是如何用 alpha 渲染图像?

这是混合模式代码:

编辑添加了 SetTextureStageState

0 投票
2 回答
1009 浏览

delphi - TWinControl 的不透明度?

如何更改基于 TWinControl 的控件的不透明度?为什么他们不将此功能添加到 TControl/TWinControl 级别(为什么只有 TForm)?

0 投票
2 回答
2878 浏览

iphone - 同一容器中子视图的不同 alpha

我有一个类似于Can you override a parent UIView's alpha value on its subviews?的问题?

在某些情况下,我想在当前视图上显示自定义半透明全屏覆盖视图。诀窍是我希望它在顶部有自定义导航栏和一些其他内容(让它成为标签),我希望导航栏是不透明的,即在原始视图上绘制所有内容。同时,我希望所有其他内容都是半透明的。我不想干扰主视图的导航栏,因为可能根本没有导航栏。我想创建一个带有导航栏和所有其他内容的容器视图,并将其添加到窗口中。但是我能想到的容器、导航栏和内容的背景颜色和 alpha 组合似乎都不起作用。

我发现的问题表明,如果容器视图不透明,这是不可能的。我的情况可能略有不同,因为透明和不透明部分之间有一条简单的边界线。所以我仍然希望有一些简单的方法。还是我必须分别管理不透明的导航栏和透明的内容视图?

0 投票
2 回答
1215 浏览

gdi+ - GDI+ 的混合公式

我有一种颜色 A,我想通过使用颜色 B 将其转换为颜色 C。所以我想知道 GDI+ 中的混合公式 F,其中 F = F(A, B) = C。A 是“底部颜色”,B 是 A 上方的叠加颜色,与 A 一起产生 C。

干杯,

// 马格努斯

0 投票
1 回答
685 浏览

opengl - 混合问题(OpenGL)

有一个问题,也许有人可以帮助我。我正在尝试使用 OpenGL 制作镜像效果。我画了一个透明的平面,一个用模板切割的“反射”场景,以及一个原始的。但我有一个完全不透明的“墙”而不是镜子。我知道这是因为第一次镜像平面渲染(以获得模板缓冲区)。但我不知道该怎么办:(这是代码: