美文网首页
高级数据

高级数据

作者: 不决书 | 来源:发表于2023-09-18 06:43 被阅读0次

分批顶点属性

glBufferSubData: 我们也可以使用glBufferSubData,填充缓冲的特定区域。这个函数需要一个缓冲目标、一个偏移量、数据的大小和数据本身作为它的参数。这个函数不同的地方在于,我们可以提供一个偏移量,指定从何处开始填充这个缓冲。这能够让我们插入或者更新缓冲内存的某一部分。要注意的是,缓冲需要有足够的已分配内存,所以对一个缓冲调用glBufferSubData之前必须要先调用glBufferData。

  glBufferSubData(GL_ARRAY_BUFFER, 24, sizeof(data), &data); // 范围: [24, 24 + sizeof(data)]

glMapBufferglUnmapBuffer: 通过调用glMapBuffer函数,OpenGL会返回当前绑定缓冲的内存指针,供我们操作,使用glUnmapBuffer函数,告诉OpenGL我们已经完成指针操作之后,OpenGL就会知道你已经完成了。在解除映射(Unmapping)之后,指针将会不再可用,并且如果OpenGL能够成功将您的数据映射到缓冲中,这个函数将会返回GL_TRUE。

  float data[] = {
  0.5f, 1.0f, -0.35f
  ...
  };
  glBindBuffer(GL_ARRAY_BUFFER, buffer);
  // 获取指针
  void *ptr = glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY);
  // 复制数据到内存
  memcpy(ptr, data, sizeof(data));
  // 记得告诉OpenGL我们不再需要这个指针了
  glUnmapBuffer(GL_ARRAY_BUFFER);

复制缓存

glCopyBufferSubData:能够让我们相对容易地从一个缓冲中复制数据到另一个缓冲中。这个函数的原型如下:

  void glCopyBufferSubData(GLenum readtarget, GLenum writetarget, GLintptr readoffset,
                         GLintptr writeoffset, GLsizeiptr size);

readtargetwritetarget参数需要填入复制源和复制目标的缓冲目标。比如说,我们可以将VERTEX_ARRAY_BUFFER缓冲复制到VERTEX_ELEMENT_ARRAY_BUFFER缓冲,分别将这些缓冲目标设置为读和写的目标。当前绑定到这些缓冲目标的缓冲将会被影响到。
面这个例子展示了如何复制两个顶点数组缓冲:

  float vertexData[] = { ... };
  glBindBuffer(GL_COPY_READ_BUFFER, vbo1);
  glBindBuffer(GL_COPY_WRITE_BUFFER, vbo2);
  glCopyBufferSubData(GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, 0, 0,   
  sizeof(vertexData));
  float vertexData[] = { ... };
  glBindBuffer(GL_ARRAY_BUFFER, vbo1);
  glBindBuffer(GL_COPY_WRITE_BUFFER, vbo2);
  glCopyBufferSubData(GL_ARRAY_BUFFER, GL_COPY_WRITE_BUFFER, 0, 0, sizeof(vertexData));

相关文章

  • 一、Redis基础与高级数据结构

    Redis基础与高级数据结构 一、Redis基础与高级数据结构[https://www.jianshu.com/p...

  • Python - 语法

    数据结构 函数 高级特性 函数式编程 数据结构

  • 高级数据

    主键冲突 主键冲突:更新操作(不常用) 主键冲突:替换(常用) 蠕虫复制 蠕虫复制:从已有的数据中去获取数据,然后...

  • 数据高级操作

    一.新增语法 insert into <表名> [(字段列表)]value(值列表); 1.主键冲突当主键存在冲突...

  • 【线上直播】《政务大数据治理》

    分享讲师:马玉玺 讲师简介: 大数据业务专家。现任职深圳华傲数据高级项目负责人,高级技术经理,负责大数据项目管理及...

  • Python中的高级数据结构

    Python中的高级数据结构

  • 20171022 周日 今日计划+回顾

    一、今日计划 学习任务:高级数据库 - 复习学过内容(计划外) 二、今日回顾 学习任务:高级数据库 - 复习学过内...

  • 互动派-数说故事招聘

    互动派-数说故事(大数据研究服务)热招产品经理、高级数据分析师、高级销售/销售总监,求推荐or自荐,坐标广州珠江新...

  • 2018-12-06 数据透视高级应用

    21 数据透视高级应用 【回顾目标】 1、完成数据透视高级应用课件学习 2、完成古村坪取水坝计量图及计算式的修改 ...

  • 数据库相关资料

    CMU 数据库高级教程CMU 数据库初级教程 LLVM 资料汇总

网友评论

      本文标题:高级数据

      本文链接:https://www.haomeiwen.com/subject/gfqgvdtx.html