gpt4 book ai didi

opengl - 带有曲面分割着色器的 GL_Triangles

转载 作者:行者123 更新时间:2023-12-02 02:15:49 24 4
gpt4 key购买 nike

当我使用曲面分割着色器时,我是否必须从 CPU 程序补丁而不是三角形传递?

    glDrawArrays(GL_PATCHES, 0, 3); //Works with Tess Shaders

glDrawArrays(GL_TRIANGLES, 0, 3); //Works not with Tess Shaders

什么是可视化补丁?它可以是一个被分割的三角形吗?

最佳答案

补丁只是点的集合,没有真正的内在结构......你的 TCS 和 TES 才是它们的意义所在。与 GL_TRIANGLES(严格由 3 个顶点定义)不同,GL_PATCHES 没有预定义每个面片的顶点数。您可以自己设置面片中的顶点数:

glPatchParameteri ​(GL_PATCH_VERTICES​​, N);
// where N is some value less than GL_MAX_PATCH_VERTICES

然后,绘制的每个 N 个顶点都定义一个新的面片基元。

面片实际上只是用于评估表面的控制点的集合。这就是为什么有一个名为Tessellation Control Shader可选阶段,它将数据提供给Tessellation Evaluation Shader。如果没有有关您正在评估的表面类型的更多详细信息,将其可视化的唯一方法是将其可视化为点云(例如 GL_POINTS)。

更新:

假设您正在讨论 Bézier surface ,那么控制点可以这样可视化:

   Bezier Surface

红点是控制点(GL_PATCHES中的顶点),蓝线是人造的(只是为了可视化),黑色方 block 是评估的表面(曲面分割评估的结果)着色器)。如果您在曲面分割评估之前尝试将其可视化,那么您的补丁将只是红点,并且您将花费大量时间来尝试理解它们。

关于opengl - 带有曲面分割着色器的 GL_Triangles,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24075462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com