问题标签 [glblendfunc]
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.
opengl - 保留 GLBlendFunc
我需要保留当前的 GlBlendFunc,以便在我做一些工作后恢复它。看来这不是可以用 GLPushAttrib 保存的属性之一,还有其他类似的方法可以用来保存状态吗?
opengl-es - OpenGL:将一个纹理覆盖在另一个纹理上并抑制白色背景
我是 Iphone opengl ES 编程的初学者。我有两个纹理,第一个是背景并占据全屏。我在第一张图片上打印第二张图片,但第二张图片的白色背景覆盖了部分背景。我希望在前景图片没有颜色(或白色)的地方可以看到背景。我无法弄清楚如何正确使用 glBlendFunc。
在打印第二张图像之前,我正在使用 Blending 与以下内容:
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
iphone - 如何使用 glBlendFunc (OpenGL ES 1.x) 进行 Photoshop 的屏幕混合?
我有一个简单的单通道(8 位)位图,只有亮度数据,我想将它与现有的帧缓冲区混合,比如在 Photoshop 中使用屏幕混合模式。
因此,源的白色像素 (255) 应该产生白色,源的 50% 灰色像素 (128) 应该产生 50% 的帧缓冲区像素,源的黑色像素应该不理会结果。我也必须设置glColor4f吗?
您的一些glBlendFunc专家可以在这里帮助我吗?
iphone - iPhone glBlendFunc 错误
我正在尝试使用 glBlendFunc,但它在第一次调用时失败,并出现错误“为枚举参数指定了不可接受的值”。我查看了标题,看起来 GL_DST_COLOR 是 0x0306 (774) 并且这导致了错误,因为 (GL_ZERO, GL_ZERO) 有效。知道为什么这会在 iPhone 上像这样失败吗?它出现在 ES1 和 ES2 的 gl.h 头文件中。
谢谢,安德鲁
iphone - OpenGL 混合方程是如何工作的?
opengl 版本:opengl es 1.x 平台:iphone
混合方程:
(Rs Sr + Rd Dr, Gs Sg + Gd Dg, Bs Sb + Bd Db, As Sa + Ad Da)
它是如何工作的?我不明白如果我将 src 和 des 都设置为 GL_ONE,并且我有 src 颜色为红色 (255,0,0) 和 des 颜色为黑色 (0,0,0),结果将是 (0,0,0 )
有人可以解释方程式是如何工作的,或者可以显示一些计算。
谢谢
opengl-es - 为什么 OpenGL 混合在 HTC Desire 上不起作用?
有谁知道如何在 HTC Desire 上启用 OpenGL (android) 中的混合。我正在尝试绘制彩色三角形并使用颜色缓冲区的 alpha 值将它们与背景(或另一个三角形)混合。
它既适用于模拟器(2.1),也适用于 htc hero 2.1,但不适用于我对 2.2 的渴望。英雄和导致这种情况的欲望之间是否存在一些硬件差异?
代码的主要内容是(不按顺序):
PS。如果有人需要,我可以提供更多代码...
opengl - 使用 OpenGL 混合音频
我想使用 OpenGL 混合两个(或更多)16 位音频流,我需要一些帮助
基本上我想要做的是将音频数据放入我绘制到帧缓冲区对象然后读回的纹理中。这不是问题,但是以给出正确结果的方式绘制数据有点问题。
我基本上有两个问题。
- 为了通过绘图混合数据,我需要使用混合(alpha = 0.5),但是结果不应该有任何 alpha 通道。因此,如果我渲染到例如格式为 RGB 的帧缓冲区,alpha 混合仍然可以按我的预期工作,并且生成的 alpha 不会被写入 fbo?(我想避免必须为每个渲染通道回读 fbo)
纹理 |sR|sG|sB|
帧缓冲(之前)|dR|dG|dB|
帧缓冲(后)|dR*0.5+sR*0.5|dG*0.5+sG*0.5|dB*0.5+sB*0.5|
- 音频样本是有符号的 16 位整数值。是否可以通过这种方式进行签名计算?还是我需要先在 cpu 上将值转换为无符号,绘制它们,然后在 cpu 上再次使它们签名?
编辑:
我有点不清楚。我的硬件仅限于 OpenGL 3.3 硬件。我宁愿不使用 CUDA 或 OpenCL,因为我已经将 OpenGL 用于其他东西。
每个音频样本将在单独的通道中渲染,这意味着它必须与已经渲染到帧缓冲区的内容“混合”。问题是如何将像素着色器的输出写入帧缓冲区(据我所知,这种混合无法通过可编程着色器访问,并且必须使用 glBlendFunc)。
编辑2:
每个音频样本将在不同的通道中渲染,因此着色器中一次只有一个音频样本可用,这意味着它们需要在 FBO 中累积。
而不是
c++ - OpenGL 多位 Alpha 纹理
我在渲染具有 8 位 alpha 通道的纹理时遇到了一些麻烦 - 即,它被展平为 1 位,而 glBlendFunc() 似乎没有做任何事情。
这是立即模式调用:
}
不用说,在幕后设置了多种 OpenGL 状态,显然其中之一
是否有任何我不知道的状态会干扰混合阶段?
我得到了blendfunc吗?从我查看的互联网页面来看,这似乎是正确的 - 但是我已经检查了 GDEBugger 中的纹理,因此图像肯定已经加载了 8 位 alpha 通道,并且尝试了没有 alpha 通道和一位的图像阿尔法通道。
任何帮助将不胜感激!
编辑:
回应答案:我正在使用 SOIL 图像加载库,我将查看它的源代码,看看它是如何工作的。现在,我只是在已经渲染的场景上渲染这个图像——它绝对没有遇到深度问题——实际上深度缓冲区测试已经关闭。
opengl - 使用 NSBitmapImageRep 创建带有 alpha 的 OpenGL 纹理
我正在使用以下方法加载 PNG:
我可以从中成功创建 gl 纹理并正确渲染而没有任何透明度。但是,当我打开混合使用时:
纹理以正确的透明背景渲染,但图像颜色不正确。
我在混合功能中尝试了几个选项,GL_SRC_ALPHA
, GL_ONE_MINUS_SRC_ALPHA
, GL_ONE
,GL_DST_ALPHA
等。
我被教导也许我需要重新排序图像数据中的位,也许通道已经混合了,但我不希望在这种情况下混合关闭时它能够正确渲染。
或者,我想我可以使用 libPNG,但如果可能的话,我想尝试使用 a NSBitmapImageRep
。
c++ - 自定义 glBlendFunc 比原生慢很多
我正在尝试通过片段着色器执行我自己的自定义 glBlendFunc,但是,我的解决方案比本机 glBlendFunc 慢很多,即使它们执行精确的混合功能也是如此。
我想知道是否有人对如何以更有效的方式执行此操作有任何建议。
我的解决方案是这样的:
片段.glsl