我正在使用HTML5画布对象创建一个简单的3D引擎。它工作得很好,但是我想实现红色/蓝色的anaglyph处理,这样人们就可以用红色/蓝色的眼镜真正看到3D。现在我已经渲染了两次3D对象,第二次是从第一个摄影机位置旁边的摄影机位置。
我面临的问题是如何将渲染的两个对象组合起来,使其具有正确的反义词颜色。现在我使用globalpha=0.5,将第一个渲染为红色,第二个渲染为蓝色。但这并不完全有效,因为只有受红色对象影响的像素应该保持红色,但是它们正在变成黑色和红色之间的颜色,因为我的背景色是黑色。
在查看3D anaglyph创建应用程序时,我注意到红色和蓝色像素一起计算如下:
255 0 0
0 0 255
------------- +
255 0 255
然而,HTML5画布使用alpha计算所有像素,因此如果背景色为黑色,则红色像素变为暗红色,而应保持红色。基本上我需要的是红色物体的像素只影响每个像素的红色分量,而蓝色物体的像素只影响每个像素的蓝色分量。
我可以在每像素的基础上工作,但这是可能的,而不是性能破坏?我每秒渲染20帧,所以我想这不会有任何实际用途。任何建议都将不胜感激。
我希望这张图片能澄清整体: