问题标签 [compositing]

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 回答
1527 浏览

direct3d - 在 Direct3D 中实现 Porter-Duff 规则

应该使用哪些 Direct3D 渲染状态来实现 Java 的 Porter-Duff 合成规则(CLEAR、SRC、SRCOVER 等)?

0 投票
5 回答
44283 浏览

java - 在 Java 中设置 BufferedImage alpha 掩码

我有两个从 png 加载的 BufferedImages。第一个包含图像,第二个包含图像的 alpha 蒙版。

我想通过应用 alpha 蒙版从两者中创建一个组合图像。我的 google-fu 让我失望了。

我知道如何加载/保存图像,我只需要从两个 BufferedImage 到一个具有正确 alpha 通道的 BufferedImage 的位。

0 投票
3 回答
443 浏览

php - 自动合成声音 - php 或类似的东西 - 声音的 GD 库?

我正在寻找一种方法来完成以下任务:用户在闪存中编写了一些鼓循环,并且能够以某种方式下载或保存循环的 mp3。

我认为该模式可以在服务器端进行堆肥。然后将文件的链接发送给用户。

我原以为那里可能有类似 imageGD 或 imageMagick 的声音?

此外,闪存是否可以生成用户可以即时保存的内容?这也可以,但我不知道闪存中有任何此类功能。

我想在处理过程中可以做一些事情,但我对此完全不熟悉。

这种事情怎么可能完成?

0 投票
2 回答
2421 浏览

iphone - 具有最小 drawRect 的空 UIView:开销

我有一个应用程序,它具有三个嵌套视图,这些视图在机械上很重要,但没有视觉元素:

  • 没有任何内容的 vanila UIView,仅用作 CALayers 的主机。
  • 一个 UIScrollView (查询它的来源并用于在 3d 中定位 CALayers:我真的只使用这个视图来忠实地复制滚动视图的“机制”),
  • 滚动视图的内容:一个 UIView 子类。它只是拾取触摸事件并将它们传递给委托 - 重要的是它的 UIResponder 机制。

承载 CALayers 的 UIView 是 UIImageView 的兄弟,它是绘制 CALayers 的背景图像。

我真的很想确保这些空的 UIView 没有任何与它们相关的绘图或合成开销(在时间或存储上),或者如果这不可能,则尽可能少地获得这个开销,并理解它我也许可以决定是否应该尝试不同的方法。

在界面生成器中,我已将所有视图设置为在绘制之前不清除它们的上下文。我没有将它们设置为不透明,因为它们绝对不是不透明的——它们是完全透明的。我发现我需要给滚动视图内容一个透明的清晰颜色(再次在 IB 中通过将背景颜色的不透明度设置为零),这表明它正在被绘制,这是我不想要的。

所以,简而言之,我不太了解什么是被绘制的,什么不是被绘制的(有人知道像 Quartz Debug for iPhone / 模拟器这样的工具吗?),或者如何阻止事情被绘制。

建议将非常受欢迎!谢谢,本约翰

0 投票
1 回答
535 浏览

iphone - iPhone 石英。如何使用路径而不是位图创建遮罩?

在我正在编写的可视化应用程序中,我想使用通过路径创建的遮罩来塑造图形。该图形是一个水平矩形条,其中绘制了各种形状。在这个矩形条上,我想绘制一个椭圆作为遮罩,对矩形条进行整形,使其看起来像在椭圆内绘制。我该怎么做呢?

在这个简化的示例中,我正在尝试 - 并且未能通过使用各种混合模式在其顶部绘制一个椭圆来使背景蓝色矩形显示为蓝色椭圆。

谢谢,道格

更新:解决方案简而言之:剪切路径。呸!下面的代码片段创建了我所追求的效果,它是红色背景下的蓝色椭圆。请注意,蓝色椭圆是通过将蓝色矩形约束到椭圆的形状来创建的。这就是我需要的。凉爽的。

希望这对其他人有帮助。剪切路径非常强大。干杯。

0 投票
2 回答
1820 浏览

linux - X11 和 ARGB 视觉效果:DefaultDepth() 永远不会返回 32?

我正在建立与 X 服务器的连接,如下所示:

我现在想知道为什么“深度”总是设置为 24。我希望关闭合成时它只有 24,但实际上,即使我打开合成它仍然是 24。因此,为了获得 32 位 ARGB 视觉效果,我需要首先调用 XGetVisualInfo(),并将深度显式设置为 32。

现在我的问题是: DefaultDepth() 通常不会返回超过 24 或者它只是在我的系统上?(我的显卡有点过时了......)。我知道它可以为 CLUT 显示返回 15、16 甚至 8,但它可以返回 32 吗?还是我总是必须先使用 XGetVisualInfo() 才能获得 ARGB 32 位视觉效果?

谢谢,

安迪

0 投票
1 回答
2078 浏览

cocoa - Cocoa:使用 NSGradient 作为在其下方绘制的掩码

我正在尝试使用 Cocoa 绘制形状的反射。我已经应用了一个 NSAffineTransform 并成功地重绘了形状,但现在我不知道如何在它上面绘制一个 alpha 蒙版。我正在使用一个NSCompositeDestinationOut操作,但它给了我一个不需要的结果:alt text http://img687.imageshack.us/img687/2417/capturdcran20100623094.png

我不完全确定如何解决这个问题 - 我需要这样做,以便渐变仅充当 alpha 蒙版并且实际上不显示。我是否使用了错误的合成模式?

谢谢!如果需要,这是渐变代码:

0 投票
1 回答
213 浏览

direct3d - 将数据排队到 IDirect3DDevice9 的交换链中

我是 direct3D 新手。我正在尝试在 direct3ddevice 上编写图像并从中获取 xrgb 中的相同图像。我创建一个纹理并从 GetSurfaceLevel() 获取表面。我使用图像文件并将其转换为 ARGB 并将其从纹理写入锁定的表面。但是我应该如何进一步将这些数据排队到交换链中,以便我可以使用 Direct3DDevice 上的 GetBackBuffer() 调用在 XRGB 中获得相同的数据?

我想这样做,因为我想进一步使用来自源的纹理和数据来应用特殊效果,例如使用 direct3d 合成图像(一个在 rgb 中包含一个 alpha 通道而不是另一个通道)。

0 投票
1 回答
1738 浏览

android - GLSurfaceView 上的 Android 视图动画很慢

我们注意到,当您将带有视图动画的 Android 视图(没什么复杂的,只是 AlphaAnimation 和 TranslateAnimation)放在 GLSurfaceView 之上时,动画运行缓慢(即您会看到很多卡顿)。我在GLSurfaceView,我相信我已经确认(通过设置断点)在动画播放时 GL 绘制调用没有受到影响,所以我不确定缓慢来自哪里。

有谁知道解决这个问题的方法?我知道在 iPhone 上这也曾经是一个问题,但他们进行了一些操作系统更新来解决这个问题。它们是短视图动画(例如你赢了!)所以这不是世界上最糟糕的事情,但如果有一些解决方法会很好。

我们不在 GL 中制作动画的原因是它们必须能够从我们游戏中的任何 Activity 运行,并且并非我们所有的 Activity 都有 GLSurfaceViews。

最后,如果重要的话,我们将使用来自 Replica Island http://code.google.com/p/replicaisland/的修改后的 GLSurfaceView 源

0 投票
3 回答
8269 浏览

colors - 混合如何与 WebGL 中的 GLSL ES 片段着色器一起工作?

我正在尝试使用 WebGL 显示一个简单的效果。当然,这意味着我使用的是 GLSL ES 1.0 规范中定义的片段着色器语言。

我正在使用的代码很大程度上是从其他来源复制的。它设置一个正方形并使用片段和顶点着色器来确定像素颜色。以下代码将只显示一个白色方块。

但是,如果我将 alpha 分量更改为1.0then 它将显示一个黑色方块。

我假设片段着色器输出的颜色必须与以前的颜色组合。如何确保只有最后一种颜色(无论其 alpha 值如何)是实际选择的要显示的颜色?

或者,也许我的顺序是错误的。可能会有一个后期阶段与来自片段着色器的颜色相结合以产生白色。无论如何,我知道某种混合正在进行,因为当我将 alpha 值更改为 0.5 时,我得到一个灰色方块。我只想知道,白色是从哪里来的?我该如何摆脱它?

据我所知,问题与混合功能无关。代码在 GitHub。在 Google Chrome 或 Firefox 中试用。