OpenGL - 添加顶点

2024-02-18

我有一个子函数,它读取数据流并基于该数据流创建顶点数据数组。主函数重复调用该子函数并更新顶点数据数组,然后将其绑定到缓冲区并进行绘制。到目前为止,一切都很好。但是,我不知道如何添加顶点。 C++ 不允许您重新分配或调整整个数组的大小。我不能使用向量,因为 OpenGL 函数接受数组,而不是向量。


您可以使用向量来填充 OpenGL 顶点缓冲区。 a 中的值vector保证是连续的。有关相关语言标准的详细信息,请参阅以下讨论:

  • std::vector 元素是否保证是连续的? https://stackoverflow.com/questions/849168/are-stdvector-elements-guaranteed-to-be-contiguous
  • 假设 STL 向量存储始终是连续的是否安全? https://stackoverflow.com/questions/247738/is-it-safe-to-assume-that-stl-vector-storage-is-always-contiguous

这意味着像下面这样的代码是安全的:

std::vector<GLfloat> vertexPositions;
// Populate vector with vertex positions.
GLuint bufId = 0;
glGenBuffers(1, &bufId);
glBindBuffer(GL_ARRAY_BUFFER, bufId);
glBufferData(GL_ARRAY_BUFFER, vertexPositions.size() * sizeof(GLfloat),
             &vertexPositions[0], GL_STATIC_DRAW);

微妙但关键的部分是您传递的地址第一个元素向量的地址,而不是向量对象的地址。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenGL - 添加顶点 的相关文章

  • 如何向 UWP 项目添加 .NET dll 引用?

    我有几个适用于 NETv4 x 的 NET dll 项目 我将版本更改为 4 6 1 并重新构建 没有出现问题 当我尝试从 UWP 项目向它们添加引用时 出现错误 项目的目标是 NETCore 而文件引用的目标是 NET框架 这不是受支持的
  • 如何在 C# 事件中区分更改是由代码还是由用户进行?

    我有一个简单的TextBox一开始是空的 我有一个简单的事件 TextChanged 可以知道用户何时更改了其中的任何内容TextBox 但是 如果我自己在代码中对其执行任何操作 该事件就会触发 喜欢设置textbox Text Test
  • boost线程在中断时不打印退出消息

    我有这段代码用于执行三个线程 其中第二个线程应在按 Enter 时中断并打印退出消息 void input val DO STUFF return void process val DO STUFF try cout lt lt waiti
  • 实体框架代码优先 - 在另一个文件中配置

    使用 Fluent API 将表到实体的映射分开的最佳方法是什么 以便它全部位于单独的类中 而不是内联在 OnModelCreating 方法中 我目前在做什么 public class FooContext DbContext prote
  • 我应该在单元测试中使用 AutoMapper 吗?

    我正在为 ASP NET MVC 控制器方法编写单元测试 这些控制器依赖于IMapper 我创建的用于抽象 AutoMapper 的接口 使用 Castle Windsor 通过构造函数注入传入 动作方法使用IMapper从领域对象映射到
  • Linq Where 本地计数器关闭在 VS watch 中的结果不同

    我尝试删除前 3 个元素array与 LinQWhere扩展功能 这是一个例子 var array new 1 2 3 4 5 6 7 8 9 var count 3 var deletedTest1 0 var test1 array W
  • __FUNCTION__ 宏的 C# 版本

    有人对 C FUNCTION 宏的 C 版本有好的解决方案吗 编译器似乎不喜欢它 尝试使用这个代替 System Reflection MethodBase GetCurrentMethod Name C 没有 LINE or FUNCTI
  • 控制台应用程序 .net Core 2.0 的配置

    在 net Core 1 中我们可以这样做 IConfiguration config new ConfigurationBuilder AddJsonFile appsettings json true true Build 这样就可以使
  • 如何避免选择项目时 winforms 树视图图标发生变化

    我正在一个小型 C Winforms 应用程序中尝试树视图 我已经以编程方式将 ImageList 分配给树视图 并且所有节点都很好地显示了它们的图标 but当我单击一个节点时 它的图标会发生变化 变为 ImageList 中的第一个图像
  • CMake - 将预构建库链接到 C# 项目

    我正在使用 CMake 构建 C 库 该库依赖于已构建的库 dll 我似乎无法让图书馆链接到我的图书馆 我尝试过使用target link libraries mylib external lib 我也尝试过暴力破解 reference e
  • 当格式字符串包含“{”时,String.Format 异常

    我正在使用 VSTS 2008 C Net 2 0 执行以下语句时 String Format 语句抛出 FormatException 有什么想法是错误的吗 这是获取我正在使用的 template html 的位置 我想在 templat
  • 在生产者-消费者情况下使用条件变量

    我正在尝试了解条件变量以及如何在生产者 消费者情况下使用它 我有一个队列 其中一个线程将数字推入队列 而另一个线程从队列中弹出数字 当生产线程放置一些数据时 我想使用条件变量向消费线程发出信号 问题是有时 或大多数时候 它只将最多两个项目推
  • 使用 AutoMapper 进行 LINQ GroupBy 聚合

    试图让查询工作 但老实说不确定如何 或者是否可能 进行它 因为我尝试过的一切都不起作用 共查询6个表 Person PersonVote PersonCategory Category City FirstAdminDivision Per
  • OpenMP C 程序运行速度比顺序代码慢

    我是 OpenMP 的新手 正在尝试并行化 Jarvis 的算法 然而事实证明 与顺序代码相比 并行程序花费的时间要长 2 3 倍 难道问题本身就不能并行化吗 或者我并行化它的方式有问题 这是我针对该问题的 openMP 程序 其中有 2
  • 便携式终端

    有没有办法根据所使用的操作系统自动使用正确的 EOL 字符 我在想类似的事情std eol 我知道使用预处理器指令非常容易 但很好奇它是否已经可用 我感兴趣的是 我的应用程序中通常有一些消息 稍后我会将这些消息组合成一个字符串 并且我希望将
  • 多个同名内存数据库

    关系到这个答案 https stackoverflow com a 48446491 596758 我试图通过设置让多个上下文工作UseInMemoryDatabase以同名 下面的测试失败 第二个上下文为空 我还需要做什么才能在内存数据库
  • 有没有办法让 VS2010 在我的方法中扩展或收缩 try 块?

    我的代码有很多 try catch finally 块 与我在 VS2010 中的方法不同 除了添加区域之外 我无法在开发时扩展或收缩这些区域来隐藏内容 try vm R vm Qu vm T vm D vm Fil vm Type vm
  • 局部静态变量初始化是线程安全的[重复]

    这个问题在这里已经有答案了 假设我有一个包含三个静态函数的类 如下所示 include
  • 如何使复选框不可选择?

    我想知道你是怎么做的CheckBox在c 中无法选择 我认为这会是类似 SetSelectable false 之类的东西 但我似乎看不到该方法 I found CanSelect但这似乎是只读属性 您可以设置自动检查 http msdn
  • Windows 上 libcurl 的静态库[重复]

    这个问题在这里已经有答案了 如何将此库 libcurl 静态链接到 exe 我努力了 disable share enable static 没有帮助 我使用的是MingW32 有没有一种简单的方法来静态链接这个库 这样我的应用程序就不再有

随机推荐

  • WPF 中 DataTemplate 中的 x:Key、x:Name 和 x:UID 有什么区别?

    我正在尝试在 WPF 中创建动态选项卡 并且正在尝试编写一个仅适用于某些选项卡项目的内容模板 我希望能够为内容模板创建一个标识符 以便我可以在后面的代码中引用它 这样我就可以有选择地将它应用于单个 TabControl 中的某些选项卡 但是
  • 如何准确合并 firebase firestore 中的多个流

    在您说这是一个重复的问题或者我应该使用嵌套流构建器之前 请听我说完 我正在设计一个社交媒体类型的应用程序 我希望用户在他们关注的人在 我的关注者帖子 集合中发布内容时收到更新 在应用程序中 应用程序将检查 firebase rtdb 中当前
  • 打印大量格式化数据时如何避免Broken Pipe错误?

    我正在尝试打印我的格式的元组列表stdout 为此 我使用字符串格式 http docs python org 2 library string html string formatting方法 一切工作正常 但是当我通过管道输出看到 第一
  • 如何使用 PhoneGap Javascript 读取 Android 中的文件

    如何使用 PhoneGap 和 Javascript 读取 Android 中的文件 我尝试了不同站点上给出的几个代码片段 但未能成功 其实我是一个初学者 对Phonegap知之甚少 我也尝试过文件阅读器 http docs phonega
  • 如何捕获控制器内变量中的default.phtml

    我有一个简单的问题 如何将 Project application layouts scripts default phtml 中的 default phtml 的内容渲染为变量 以便我可以拥有它的 html 在索引控制器中 使用一个操作和
  • 行为测试运行器在 Jenkins 上没有彩色输出

    我在 EC2 实例上的 Ubuntu 服务器 14 04 上设置了 jenkins 我有一些使用执行的硒测试behave http pythonhosted org behave 作为测试运行者 在 Jenkins 上我也安装了该插件安西色
  • 如何使用 asp.net 为 Web 应用程序创建补丁文件

    我想了解 VS 2010 中是否有可用的规定或使用某些第三方工具来为 Web 应用程序创建补丁 热修复 我不想发布副本并替换文件 dll 方法 而是使用 Web 设置来安装应用程序 以便仅更新原始应用程序中更改的文件并将其安装在虚拟目录中
  • C++ 链表行为

    我有一些 C 代码 其中有两个链接列表 比如 A 和 B A 被插入到 B 的特定位置 并且 A 仍然有元素 如何使用 C STL 有效地模拟相同的行为 如果我尝试拼接 它会使第二个空 谢谢 戈库尔 尝试插入 B insert positi
  • 实体框架获取 sql 连接

    鉴于在实体框架中显式关闭连接 https stackoverflow com questions 5285877 closing connections explicitly in entity framework and http msd
  • Date.toLocaleDateString() 不适用于 Nodejs v10.14.2

    由于我将节点服务器更新为最新稳定版本 因此日期字符串不再像以前那样显示 SERVER 使用 Nodejs v10 14 2 在 centOS 7 UNIX 上运行节点 LAPTOP 使用 Nodejs v8 5 0 在 macOS 10 1
  • Python在父类中使用派生类的方法?

    我可以强制父类调用派生类的函数版本吗 class Base object attr1 attr2 def virtual self pass doesn t do anything in the parent class def func
  • 如何在 JavaScript 中检测滑动? [复制]

    这个问题在这里已经有答案了 我想用js制作简单的游戏 但为此 我希望用户通过在屏幕上向上 向下 向右 向左滑动手指 光标来进行游戏 有一个简单的方法可以做到吗 你可以试试这个 非常简单易懂 var container document qu
  • 如何知道带有 TCP Fast Open 的 sendto() 是否实际使用了 Fast Open?

    我在Linux 3 15机器上编写了一个TCP客户端 它能够使用TCP Fast Open status sendto sd const void data data len MSG FASTOPEN const struct sockad
  • 将日期添加到 SQL 数据库备份文件名

    我正在使用下面的内容从 SQL 作业备份数据库 有人可以告诉我如何将当前日期添加到输出文件名中吗 最好采用 YYYYMMDD 格式 BACKUP DATABASE myDB TO DISK N myPath myDB bak WITH NO
  • Javafx Listview 添加和编辑元素

    我想直接向列表视图添加和编辑元素 To change this license header choose License Headers in Project Properties To change this template file
  • 没有默认构造函数的初始化类

    如果我有课A仅具有复制构造函数和带参数的构造函数int and int 我将该类放在一个类中B class B public B private A a 我将如何初始化a在 B 的构造函数中 我试过了a 0 0 a A 0 0 但毫不奇怪
  • 使用 AWS 和 Elastic Beanstalk 的 Websocket

    我正在尝试让我的 websocket 与 Amazon Web Service 和 Elastic Beanstalk ELB 配合使用 我根据以下内容设置了代理协议 http docs aws amazon com ElasticLoad
  • SEAM - 获取base65身份验证的url

    我的 Components xml 中有这个配置
  • 实体框架5复杂类型和字段列表中的未知列错误

    请耐心等待 因为我是 C 和一般编程的新手 我试图定义一个与主类位于同一个表中的复杂类型 基本上 这是很好的旧用户和地址示例 public class Customer Key public int customerId get set s
  • OpenGL - 添加顶点

    我有一个子函数 它读取数据流并基于该数据流创建顶点数据数组 主函数重复调用该子函数并更新顶点数据数组 然后将其绑定到缓冲区并进行绘制 到目前为止 一切都很好 但是 我不知道如何添加顶点 C 不允许您重新分配或调整整个数组的大小 我不能使用向