2012-04-28 89 views
6

在我的OpenGL项目中,我要动态地创建平滑的多边形,similiar像这样的:OpenGL的:创建复杂的和平滑的多边形

enter image description here

的问题主要依赖于平滑处理。到目前为止,我的程序首先是创建一个随机放置顶点的​​VBO。然后,在我的片段着色器(我正在使用可编程函数流水线)中,应该发生平滑过程,或者换句话说,创建的曲线超出了先前定义的顶点之间的“线条”。

正是在这里是问题:我不是很熟悉thoose复杂的数学算法,这将检查,如果一个点是在“平滑多边形”内或不。

回答

3

首先,你不能在片段着色器中做到这一点。片段着色器仅限于在写入屏幕之前设置“像素”(基本上,但不完全是实际像素)的最终(ish)颜色。它不能在曲线上创建新的点。

This page给出了用于创建平滑曲线的不同算法的不错概述。

一般的方法是使用几何着色器将几个点分成多个点,然后像普通的多边形一样渲染它们。但我不知道细节。例如,尝试谷歌搜索bezier geometry shader

等等,我说谎。我发现一个程序here它在片段着色器中。

+0

谢谢!我想我找到了我正在寻找的内容:http://code.google.com/p/victamin/downloads/detail?name=GPUBezier.zip – cafaxo 2012-04-28 13:21:19