首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过HDMI保持视频的alpha透明度

通过HDMI保持视频的alpha透明度
EN

Stack Overflow用户
提问于 2013-04-22 18:12:12
回答 2查看 4.1K关注 0票数 2

我正在处理的场景实际上是这样的:我需要获取OpenGL生成的屏幕,并通过HDMI将其发送到一个FPGA组件,同时保留alpha通道。但是现在,通过HDMI发送的数据只有RGB (24bit,没有alpha通道),所以我需要一种方法来强制通过这个端口发送alpha位。

请参阅图片:http://i.imgur.com/hhlcbb9.jpg

我能想到的一种解决方案是将屏幕缓冲区从RGBA模式转换为RGB,同时在RGB缓冲区内混合Alpha通道。

例如:

代码语言:javascript
复制
The original buffer: [R G B A][R G B A][R G B A]
The output i want: [R G B][A R G][B A R][G B A] 

重点是不必遍历每一个像素。但我不确定是否可以使用OpenGL或任何技术(VideoCore内核?)

EN

回答 2

Stack Overflow用户

发布于 2013-04-22 20:07:07

opengl帧缓冲区

你实际上是指,还是某种纹理?因为帧缓冲区不能调整大小,并且这个结果图像的大小将在像素数上增加25%。你不能真的这么做。

您可以使用纹理来执行此操作,但只能通过调整其大小来实现。你必须将带有glGetTexImage的纹理像素数据放到某个缓冲区中,然后使用glTexImage2D将纹理像素数据上传到另一个纹理。只需相应地更改pixel transfer format和纹理宽度即可。读操作将使用GL_RGBA,写操作将使用GL_RGB,内部格式为GL_RGB8

这样做的表现几乎肯定不会很好。但它应该能行得通。

但事实并非如此,你无法通过简单的调用来实现这一点。

票数 1
EN

Stack Overflow用户

发布于 2015-11-19 19:44:00

您可以在opengl中通过视频卡上的不同rgb或hdmi视频输出单独发送alpha通道。所以你的电脑现在通过一根线缆输出RGB,然后通过另一根线缆输出Alpha。您的alpha可能需要转换为灰度,以便它仍然是24位。然后选择哪个信号是fpga中的关键。我假设你的fpga支持色键。

我以前做过类似的事情,但是使用了一个叫做Brainstorm的程序,它使用了一个支持SDI输出的特定视频卡,它将RGB和Alpha分成不同的视频通道(电缆),然后由视觉混合器进行键控。

然而,今天我已经创建了一个新的解决方案,它首先在pc上混合多个视频通道,然后将最终的混合视频直接输出到RTMP流服务器或DVI到SDI扫描转换器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16144540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档