检测不同颜色之间的边界

时间:2014-01-11 17:14:45

标签: c++ opengl 3d cellular-automata

我正在基于细胞自动机方法生成3D多晶体结构。我的渲染结构如下: http://www-e.uni-magdeburg.de/dzoellne/simulation/Bilder/3D_structure.gif

有没有办法标记每种颜色的边界?每种颜色都受黑线限制,如下所示: http://web.boun.edu.tr/jeremy.mason/research/images/monte_carlo.png

不幸的是我正在使用旧的1.1 OpenGL。

2 个答案:

答案 0 :(得分:0)

好吧,我可能有一个解决方案,但速度很慢。 从缓冲区中取出您的图像并将其存储到阵列中。在遍历阵列中的每个像素并且像素应该是黑色的情况下,在屏幕上放置黑点。拍摄图像的速度很慢,点放也很慢但我在1.1中看不到另一种方法。

答案 1 :(得分:0)

也许有些使用Stencil缓冲区?

我尝试渲染图像两次,在X和Y中有轻微(1px)偏移。在渲染过程中为每种颜色指定不同的模板值。然后,如果在模板缓冲区上使用'add'操作渲染第一个传递,并使用'subtract'传递第二个传递,则应在模板缓冲区中进行简单的边缘检测。然后你只需要在启用模板测试的情况下渲染黑色四边形。

我意识到这种方法可能不是像素完美的并且会给出一些文物,但这是我脑海中最好的ATM:)。