- 缓冲区对象 Buffer Objects
- 创建和绑定缓冲区对象 Creating and Binding Buffer Objects
- 创建缓冲对象数据存储 Creating Buffer Object Data Stores
- 修改缓冲对象数据存储 Modifying Buffer Object Data Stores
- Clear缓冲对象数据存储 Clear Buffer Object Data Stores
- 映射映射缓冲数据 Mapping Buffer Data
- 刷新映射缓冲数据 Flush Buffer Data
- 取消映射缓冲数据 Unmapping Buffer Data
- 使缓冲区数据无效 Invalidating Buffer Data
- 缓冲区间复制 Copying Between Buffers
- 缓冲对象查询 Buffer Object Queries
- glInvalidateBufferSubData
glInvalidateBufferSubData
是OpenGL中用于标记缓冲对象部分或全部数据为无效的函数。当调用这个函数时,指定缓冲区内的数据范围将被标记为未定义状态,这意味着之后尝试读取这部分数据时,OpenGL可能不会返回之前写入的真实内容。
函数原型如下:
void glInvalidateBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr length);
参数说明:
buffer
: 指定需要使其中部分数据失效的缓冲对象的名称。offset
: 表示从缓冲对象起始位置开始计算的偏移量,单位是基本机器单位(字节),该偏移量指向要失效的数据区域的起始点。length
: 指定要失效的数据范围大小,同样以基本机器单位为单位。
在执行glInvalidateBufferSubData
后,指定范围内缓冲区的数据被视为已失效且不可预测,通常后续会重新填充这些数据。这个功能可以用于优化某些场景下的性能,例如当知道某部分数据即将更新而不需要保留旧值时,通过提前标记其为无效可避免不必要的内存访问和一致性维护操作。
- glInvalidateBufferData
void glInvalidateBufferData(GLuint buffer);
// 等价于
// glInvalidateBufferSubData(buffer, 0, BUFFER_SIZE);