OpenSubdiv.OPENSUBDIV_VERSION.Bfr
OpenSubdiv.OPENSUBDIV_VERSION.Far
OpenSubdiv.OPENSUBDIV_VERSION.Osd
OpenSubdiv.OPENSUBDIV_VERSION.Sdc
OpenSubdiv.OPENSUBDIV_VERSION.Vtr

OpenSubdiv.OPENSUBDIV_VERSION.Osd.GLPatchTable

概述

Osd.GLPatchTableOpenSubdiv中的一个类,用于管理OpenGL细分表并允许快速寻址。它支持多种类型的拓扑,例如三角形、四边形、点图案和六边形等。

成员函数

Osd.GLPatchTable提供了以下成员函数:

  • Osd.GLPatchTable()

    默认构造函数。

  • void Reset(int numVertexElements, int numVaryingElements, Osd.PatchArrayVector const & patchArrays)

    重置GLPatchTable对象,初始化其成员变量。

    参数numVertexElements指定每个顶点包括的元素数,例如位置、法线、颜色等。

    参数numVaryingElements指定每个变量包括的元素数。

    参数patchArrays是一个Osd.PatchArrayVector容器对象,其中包含了所有的细分拓扑和每一个拓扑(PatchArray)需要的patchParam数量数组。

  • void BindVertexArray()

    绑定当前的VertexArray对象。

  • void UnbindVertexArray()

    解除当前的VertexArray对象绑定。

  • void UpdateVertexBuffer(std::vector<float> const & src, int numVertices)

    更新VertexBuffer对象的数据。src是一个包含VertexBuffer数据的容器对象,numVertices指定了容器中包含的顶点数量。

成员变量

Osd.GLPatchTable包含以下成员变量:

  • numPatches() const -> int

    返回当前拓扑组包含的patch的数量。

  • GetPatchArray(int patchIndex) const -> PatchArray const &

    返回给定索引的拓扑。

示例

以下示例代码展示了如何使用Osd.GLPatchTable类:

Osd.GLPatchTable patchTable;

// ...

std::vector<float> vertexdata(numVertices * numVertexElements);

// ...

patchTable.Reset(numVertexElements, numVaryingElements, patchArrays);

patchTable.BindVertexArray();

patchTable.UpdateVertexBuffer(vertexdata, numVertices);