我想在Linux系统上使用C,OpenGL渲染凹多边形。有人能提供示例代码吗?在最新版本的OpenGL中如何做到这一点(假设根据glxinfo NVIDIA驱动程序352.41支持OpenGL 4.5,但无论您喜欢什么3+版本,它都支持在Linux上至少由NVIDIA在硬件上实现的扩展)。
堆栈溢出上的这个问题点使用GLU tesselation,这是不推荐的。使用模具缓冲的方法,我不完全理解,但如果这是“业界接受的标准”,现在这样做,我将投入更多的努力在理解。
这个帖子指的是一个我不想在Linux和C上使用的.NET库,tesselation着色器--我想要一个示例--如何使用,但是我可以找到的所有示例都是从凸起开始的,被废弃的库被移到另一个存储库中,我想转移到另一个存储库中。
谢谢。
发布于 2015-09-23 15:17:51
绝大多数OpenGL应用程序根本不绘制凹多边形;这不是API或硬件直接支持的东西,因此没有行业标准方法。模板将在框架缓冲区中实现,任何形式的凸分解都将在几何级别实现。
模板法其实并不难理解。比喻是跳篱笆:多边形的边缘是栅栏,多边形本身是封闭的土地。要确定一个点是否在土地内,可以从外面的任何地方开始,然后以一条直线走向它。数一数你要跳多少次篱笆才能到那里。每次你跳过篱笆,你都会从里面转到外面,反之亦然。因此,如果您跳过了偶数的栅栏,那么点必须在内部(例如,您从外到内一次,或者->在->外部->内,或者-> an -> must -> an -> must -> inside,等等)。如果你跳过一些奇数的篱笆,那肯定是在外面。
模板方法保持每像素的栅栏跳跃计数。
它画一个三角形扇形相对于一个不动点,即多边形的一个顶点。所以每个栅栏都有一个三角形,第三个坐标是一个固定的位置,你知道它在里面。
三角形内的像素是每个点,为了让你到达直线上的不动点,需要你跳过那个栅栏。
因此,任何位置的模板总数都是从那里跳转到多边形所需的栅栏数。
所以所有奇怪的模板结果都是内部的点。所有的结果都是外在的。
https://stackoverflow.com/questions/32742362
复制相似问题