IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> QOpenGLBuffer -> 正文阅读

[系统运维]QOpenGLBuffer

一、描述

QOpenGLBuffer 类提供了用于创建和管理 OpenGL 缓冲区对象的函数。

QOpenGLBuffer 对象可以作为对底层 OpenGL 缓冲区对象的引用进行复制:

QOpenGLBuffer buffer1(QOpenGLBuffer::IndexBuffer);
buffer1.create();

QOpenGLBuffer buffer2 = buffer1;

当以这种方式复制对象时,QOpenGLBuffer 执行浅拷贝,但不实现写时复制语义。每当修改副本时,原始对象都会受到影响。

二、类型成员

1、enum QOpenGLBuffer::Access:此枚举定义了 map() 的访问模式。

  • ReadOnly:缓冲区将被映射为只读。
  • WriteOnly:缓冲区将被映射为只写。
  • ReadWrite:缓冲区将被映射用于读写。

2、enum QOpenGLBuffer::RangeAccessFlag:此枚举定义了 mapRange() 的访问模式位。

  • RangeRead:缓冲区将被映射以供读取。
  • RangeWrite:缓冲区将被映射以进行写入。
  • RangeInvalidate:丢弃指定范围的先前内容。
  • RangeInvalidateBuffer:丢弃整个缓冲区的先前内容。
  • RangeFlushExplicit:表示修改将通过 glFlushMappedBufferRange 显式刷新。
  • RangeUnsynchronized:表示在从 mapRange() 返回之前不应该同步挂起的操作。

3、enum QOpenGLBuffer::Type:此枚举定义了使用 QOpenGLBuffer 创建的 OpenGL 缓冲区对象的类型。

  • VertexBuffer:顶点数组时使用的顶点缓冲区对象。
  • IndexBuffer:用于 glDrawElements() 的索引缓冲区对象。
  • PixelPackBuffer:用于从 OpenGL 服务器读取像素数据的像素包缓冲区对象。
  • PixelUnpackBuffer:像素解包缓冲区对象,用于将像素数据写入 OpenGL 服务器。

4、enum QOpenGLBuffer::UsagePattern:此枚举定义了 QOpenGLBuffer 对象的使用模式。

  • StreamDraw:数据将被设置一次,并用于绘制操作几次。
  • StreamRead:数据将被设置一次并使用几次从OpenGL服务器读回数据。
  • StreamCopy:数据将被设置一次并使用几次,用于从 OpenGL 服务器读取数据以用于进一步的绘图操作。
  • StaticDraw:数据会设置一次,多次用于绘图操作。
  • StaticRead:数据将被设置一次并多次用于从 OpenGL 服务器读取数据。
  • StaticCopy:数据将被设置一次并多次用于从 OpenGL 服务器读取数据以用于进一步的绘图操作。
  • DynamicDraw:数据会被反复修改,多次用于绘图操作。
  • DynamicRead:数据将被反复修改并多次用于从OpenGL服务器读回数据。
  • DynamicCopy:数据将被反复修改并多次用于从 OpenGL 服务器读取数据以用于进一步的绘图操作。

三、成员函数

1、void allocate(const void *data, int count)

将 count 字节的空间分配给缓冲区,初始化为 data 的内容。任何以前的内容都将被删除。

假定已在此缓冲区上调用了 create(),并且已将其绑定到当前上下文。

??????void allocate(int count)

将 count 个字节的空间分配给缓冲区。任何以前的内容都将被删除。

假定已在此缓冲区上调用了 create(),并且已将其绑定到当前上下文。

2、bool?bind()

将与此对象关联的缓冲区绑定到当前的 OpenGL 上下文。如果无法绑定,则返回 false,通常是因为此 OpenGL 实现不支持 type()。

缓冲区必须绑定到调用 create() 时当前的相同 QOpenGLContext,或者绑定到与其共享的另一个 QOpenGLContext。否则,此函数将返回 false。

3、GLuint bufferId()

返回与此缓冲区关联的 OpenGL 标识符。

4、bool create()

在 OpenGL 服务器中创建缓冲区对象。返回是否已创建对象。

必须使用当前的 QOpenGLContext 调用此函数。缓冲区将绑定到并且只能在该上下文(或与其共享的任何其他上下文)中使用。

5、void destroy()

销毁此缓冲区对象。所有对缓冲区的引用都将变为无效。

6、bool isCreated()

此缓冲区是否已创建。

7、void * map(QOpenGLBuffer::Access access)

将此缓冲区的内容映射到应用程序的内存空间并返回指向它的指针。

假定已在此缓冲区上调用了 create(),并且已将其绑定到当前上下文。

8、void * mapRange(int offset, int count, QOpenGLBuffer::RangeAccessFlags access)

将此缓冲区的内容的 offset? 和count 指定的范围映射到应用程序的内存空间并返回指向它的指针。

假定已在此缓冲区上调用了 create(),并且已将其绑定到当前上下文。

9、bool read(int offset, void *data, int count)

将此缓冲区中从 offset 开始的 count 字节读取到 data 中。返回是否成功读取。

假定此缓冲区已绑定到当前上下文。

10、void?release()

从当前 OpenGL 上下文中释放与此对象关联的缓冲区。

必须使用与在缓冲区上调用 bind() 时相同的 QOpenGLContext 当前调用此函数。

11、【static】void release(QOpenGLBuffer::Type type)

释放与当前 QOpenGLContext 中的 type 关联的缓冲区。

12、void setUsagePattern(QOpenGLBuffer::UsagePattern value)

设置此缓冲区对象的使用模式。该函数必须在 allocate() 或 write() 之前调用。

13、int size()

返回此缓冲区中数据的大小,用于读取操作。如果不支持获取缓冲区大小或尚未创建缓冲区,则返回 -1。

假定此缓冲区已绑定到当前上下文。

14、bool unmap()

使用先前调用 map() 将缓冲区映射到应用程序的内存空间后取消映射。返回是否取消成功。

假定此缓冲区已绑定到当前上下文,并且之前已使用 map() 进行映射。

15、void write(int offset, const void *data, int count)

用 data 的内容替换从 offset 开始的这个缓冲区的 count 字节。缓冲区中的任何其他字节都将保持不变。

假定已在此缓冲区上调用了 create(),并且已将其绑定到当前上下文。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 13:09:20  更:2022-05-09 13:10:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:52:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码