Opengl 二进制或帧缓冲区混合

Opengl 二进制或帧缓冲区混合,opengl,fragment-shader,framebuffer,Opengl,Fragment Shader,Framebuffer,我目前正在研究一个研究论文中描述的算法,但是我遇到了一个部分,我不清楚它是如何实现的 网格是通过将摄影机放置在场景上方并调整其视锥体以包围要体素化的区域来定义的。此摄影机有一个(w,h)尺寸的关联视口。然后渲染场景,在帧缓冲区中构建体素化。像素(i,j)表示网格中的一列,该列中的每个体素使用像素的RGBA值的第k位进行二进制编码。因此,对应的图像表示一个w×h×32网格,每个体素有一位信息。此位指示基元是否通过单元。与所有像素的第k位对应的体素的并集定义了一个切片。因此,对网格进行编码的图像/纹

我目前正在研究一个研究论文中描述的算法,但是我遇到了一个部分,我不清楚它是如何实现的

网格是通过将摄影机放置在场景上方并调整其视锥体以包围要体素化的区域来定义的。此摄影机有一个(w,h)尺寸的关联视口。然后渲染场景,在帧缓冲区中构建体素化。像素(i,j)表示网格中的一列,该列中的每个体素使用像素的RGBA值的第k位进行二进制编码。因此,对应的图像表示一个w×h×32网格,每个体素有一位信息。此位指示基元是否通过单元。与所有像素的第k位对应的体素的并集定义了一个切片。因此,对网格进行编码的图像/纹理称为切片贴图。当一个基本体被光栅化时,将获得一组片段片段着色器用于根据深度确定片段在列中的位置。结果是或−使用帧缓冲区的当前值进行编辑。

大概可以通过将设置为使用二进制或来实现这一点,但是这不是一个可用的选项,我看不到通过操纵
glBlendFunc()
+
glBlendEquation()

此外,据我所知,不可能在片段着色器中读取帧缓冲区。可以将纹理绑定到着色器和帧缓冲区,但是在着色器中访问纹理是由于缺少同步

本文没有说明是否使用了OpenGL或Direct-X,但是对于其他应用,它具有相同的
glBlendEquation()
限制

我错过什么了吗

我意识到我只需通过32次就可以达到同样的效果。

OpenGL有一个单独的方法来对帧缓冲区执行逻辑操作

这可以通过使用配置和启用

glLogicOp(GL_OR);
glEnable(GL_COLOR_LOGIC_OP);
尽管标志是
GL\u COLOR\u LOGIC\u OP
,但文档表明这也将涵盖alpha值

在引文

中对它的描述稍微好一点,OpenGL有一个单独的模块,用于对帧缓冲区执行逻辑操作

这可以通过使用配置和启用

glLogicOp(GL_OR);
glEnable(GL_COLOR_LOGIC_OP);
尽管标志是
GL\u COLOR\u LOGIC\u OP
,但文档表明这也将涵盖alpha值


引文

中对它的描述稍微好一点,你引用的段落前面的最后一句说“体素化方法是[26]中描述的GPU方法的扩展”。你看过报纸了吗?另一种方法是所描述的方法,例如,使用图像加载/存储操作。是的,我只是想在发布问题后这样做,它提到了“gl逻辑操作”,这似乎是我需要的。我把答案贴在下面。你引用的段落前的最后一句话是“体素化方法是[26]中描述的GPU方法的扩展”。你看过报纸了吗?另一种方法是所描述的方法,例如,使用图像加载/存储操作。是的,我只是想在发布问题后这样做,它提到了“gl逻辑操作”,这似乎是我需要的。我把答案贴在下面。或者,你们可以阅读。或者,你们可以阅读。