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

OpenSubdiv.OPENSUBDIV_VERSION.Osd.CPUMTLVertexBuffer

概述

OpenSubdiv.OPENSUBDIV_VERSION.Osd.CPUMTLVertexBuffer是OpenSubdiv库中的一个类,它是一个用于存储CPU上的自定义顶点数据的缓存区。

该类是OpenSubdiv的一个组成部分,它可以用于GPU和CPU模式下的网格子细分,用于各种类型的应用程序和场景,如动画、特效、建模等。

功能

OpenSubdiv.OPENSUBDIV_VERSION.Osd.CPUMTLVertexBuffer类提供以下功能:

  • 存储一个或多个自定义顶点的缓存区。
  • 支持多种数据类型,如浮点数、整数、布尔值等。
  • 支持顶点数据的读取、写入和复制。
  • 支持顶点数据的插入和删除。
  • 支持顶点数据的填充和清空。
  • 支持顶点数据的统计和查询。

用例

以下是OpenSubdiv.OPENSUBDIV_VERSION.Osd.CPUMTLVertexBuffer类的一个简单用例:

#include "osd/cpumtlVertexBuffer.h"

int main(int argc, char** argv) {
  // 创建一个包含10个浮点数的缓存区
  OpenSubdiv::Osd::CPUMTLVertexBuffer<float> buffer(10);

  // 将浮点数写入缓存区
  for (int i = 0; i < 10; ++i) {
    buffer[i] = i + 1.0f;
  }

  // 从缓存区读取浮点数
  for (int i = 0; i < 10; ++i) {
    std::cout << buffer[i] << std::endl;
  }

  return 0;
}

API

OpenSubdiv.OPENSUBDIV_VERSION.Osd.CPUMTLVertexBuffer类的公共API如下:

// 构造函数
CPUMTLVertexBuffer(int numElements, int numVertices);

// 析构函数
~CPUMTLVertexBuffer();

// 复制构造函数
CPUMTLVertexBuffer(const CPUMTLVertexBuffer& src);

// 复制操作符
CPUMTLVertexBuffer& operator=(const CPUMTLVertexBuffer& src);

// 数据读写操作符
T& operator[](int index);
const T& operator[](int index) const;

// 缓存区大小
int GetNumElements() const;

// 顶点数量
int GetNumVertices() const;

// 缓存区类型
OsdVertexBufferDescriptor GetDescriptor() const;

// 缓存区复制
void Copy(const CPUMTLVertexBuffer& src);
void Copy(const void* src, int numVertices);

// 缓存区插入
void Insert(int dstIndex, const void* src, int numVertices);

// 缓存区删除
void Erase(int startIndex, int endIndex);

// 缓存区填充
void Fill(const void* value, int numVertices);

// 缓存区清空
void Clear();

// 缓存区信息统计
void GetInfo(int* numVertices, int* numElements) const;