我正在尝试使用着色器,并且有一个我找不到答案的问题。
如果我有两个相交(不完全)的四边形,我可以在片段着色器中以不同的方式渲染相交的片段吗?例如,一个四边形是红色的,另一个是绿色的(绿色的在红色的上面),一半的像素相交。我可以使用片段着色器(而不是混合)将相交的像素渲染为黑色,而将其他像素渲染为红色/绿色吗?我正在使用 open gl es 2.0。谢谢!
我正在尝试使用着色器,并且有一个我找不到答案的问题。
如果我有两个相交(不完全)的四边形,我可以在片段着色器中以不同的方式渲染相交的片段吗?例如,一个四边形是红色的,另一个是绿色的(绿色的在红色的上面),一半的像素相交。我可以使用片段着色器(而不是混合)将相交的像素渲染为黑色,而将其他像素渲染为红色/绿色吗?我正在使用 open gl es 2.0。谢谢!
EXT_shader_framebuffer_fetch
如果 GPU 支持扩展,则可以在 GL ES 2.0 中实现自定义混合。您可以在此处阅读:http ://www.khronos.org/registry/gles/extensions/EXT/EXT_shader_framebuffer_fetch.txt
这样您就可以使用变量访问片段着色器中的片段颜色gl_LastFragData
并决定如何更改颜色。
NV_shader_framebuffer_fetch
nVidia ( ) 和 Apple ( APPLE_shader_framebuffer_fetch
) GPU也有类似的专有 GL 扩展。
但请注意,此功能在某些芯片中不存在,例如 ARM 的 Mali GPU(和高通的 Adreno AFAIK)。在此类设备上,您将需要使用其他一些(我相信相当复杂)解决方案。