iOS 中 opengl 顶点数据的对齐有多重要

2024-01-31

OpenGL ES 编程指南讨论了应该避免未对齐的顶点数据,并给出了将数据对齐到 4 字节块的示例。

OpenGL ES 编程指南 http://developer.apple.com/library/ios/#documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/TechniquesforWorkingwithVertexData/TechniquesforWorkingwithVertexData.html#//apple_ref/doc/uid/TP40008793-CH107-SW1

然而,在我在网上找到的大多数演示材料和教程中,我没有看到有人这样做。下面的示例来自 71 Squared 上的演示项目:

static const SSTexturedVertexData3D EnemyFighterVertexData[] = {
    {/*v:*/{1.987003, -0.692074, -1.720503}, /*n:*/{0.946379, -0.165685, -0.277261}, /*t:*/{0.972816, 0.024320}},

无论如何你会怎么做呢?将虚拟 0.0 添加到 v 和 n,并将其中的 2 添加到 t?

我的猜测是,如果每个应用程序只加载一次顶点数据,那并不重要,但如果您在每个渲染帧上绑定和重新绑定到不同的数组,那就很重要了。我的计划是无论如何将所有阵列合并为一个,但我很好奇。


一般一个顶点是由floats它们将保持一致,因此您无需太担心这一点。其实很多书都用普通的structs 来保存顶点数据,由于填充问题,不能保证这些数据是连续的,但如果你拥有的只是浮点数,那也没关系,因为你不太可能有填充。当然,有些人(包括我自己)更喜欢使用STLvector来自 C++,但如果你在 iOS 上,虽然你可以使用 C++,但你可能正在使用 Objective-C,因此非结构方式的连续性将涉及普通的 C 数组,而使用起来并不那么有趣。

如果您创建自定义结构来保存可绘制对象的顶点数据以及其他数据,并且您使用shorts 或其他类型,您可能会发现填充成为一个问题。但如果你只坚持float你会没事的,而且你会有很好的伙伴,因为大多数关于 OpenGL 的教育资源都是这样做的。

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

iOS 中 opengl 顶点数据的对齐有多重要 的相关文章

  • 如何检测 UIImage 的非透明部分何时与 UIImage 的另一个非透明部分接触

    我在完成一些我认为会容易得多的事情时遇到了困难 每当 UIImage 中图片的非透明部分接触 UIImage 中包含的图像的另一个非透明部分时 我试图运行一个方法 我举了一个例子来帮助进一步解释我的问题 正如您在上图中看到的 我有两个三角形
  • UIKit SDK 3.0错误

    我正在使用 iphone sdk 3 0 beta 5 9m2735 SDK 当我尝试使用模拟器 3 0 选项编译代码时 出现以下错误 该代码针对其余所有模拟器选项进行编译 即 2 0 2 1 2 2 2 2 1 编译我的代码时出现以下错误
  • 使用accesskey和secretkey从S3服务器下载安全文件

    我正在尝试使用 NSURLSessionDownloadTask 从 S3 服务器下载安全文件 但它返回 403 错误 访问被拒绝 My Code NSMutableURLRequest request NSMutableURLReques
  • 解析iOS如何通过相关PFObject中的属性查询对象?

    我正在编写一个 iOS 应用程序 并使用 Parse 在服务器端存储数据 我有用户 每个用户可以拥有一辆汽车 我试图弄清楚如何编写一个查询 使我能够获取所有拥有年份小于 2000 年并且具有某种颜色 比如说红色 汽车的用户 每辆汽车与用户都
  • 如何打开/关闭 iPhone 相机闪光灯 swift 2?

    我正在寻找如何打开 关闭 iPhone 的相机闪光灯 我发现了这个 IBAction func didTouchFlashButton sender AnyObject let avDevice AVCaptureDevice defaul
  • iOS 7 UITableView:这是一个错误还是我的问题?

    请参阅附图 在 iOS 7 的表格视图中 UIKit 在附件视图和重新排序控件之间绘制一条细灰色垂直线 但是 当滚动表视图时 某些单元格中不会绘制这条线 附图中的单元格 1 2 和 8 中不存在该值 为什么是这样 我该如何修复它 我在 ip
  • 4.4 中新的 Objective-c 文字

    我可以写 42 这会创建一个NSNumber with int值 42 我可以用变量来做到这一点 例如 someIntVar 显然我尝试过但它不起作用 这很糟糕 因为然后我必须经历 NSNumber numberWithInt someIn
  • 苹果的外部配件(蓝牙)仅适用于 MFI 设备? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的学士论文的目标是通过蓝牙适配器将光串行设备连接到 iPad 目前我正在努力应对苹果的限制 我经常在网上看到我可以使用支持的配置文件 h
  • 领域列表未存储在 Swift 4.2 的发布配置中

    我刚刚构建了我的应用程序的最新版本 并且遇到了一个问题List我的所有领域对象上的 s 都没有被存储 这是一些示例代码 Object public class ReportItem Object objc dynamic var id St
  • 自定义 UIPopoverController 视图背景和边框颜色

    是否可以更改弹出视图的边框颜色 导航栏样式 颜色和箭头样式 颜色 如果是这样 怎么办 如果有一些示例代码可用 那就太好了 iOS 7以上 可以更改backgroundColor of UIPopoverController这会影响导航背景颜
  • 如何在 Swift 中退出“DispatchQueue.main.asyncAfter”

    我想在调用 deinit 时退出 DispatchQueue main asyncAfter 子视图 swift DispatchQueue main asyncAfter deadline now 5 0 self doSomething
  • 重新定位时 Mapbox 默认的 compassView 会给出奇怪的结果

    我遇到一种情况 必须将地图框罗盘视图重新定位到不同的位置 当我以其他点作为其 compassView 轴旋转地图时 compassView 现在正在旋转 并给了我一个奇怪的结果 附截图 黑色mapBox默认罗盘图标是旋转的 参考截图 这是
  • 切换到 Xcode 7 后,应用程序大小从 9 MB 增长到 60 MB,有解决办法吗?

    我一直在回顾 Git 历史来寻找文件大小发生巨大变化的原因 但我能找到的唯一真正原因是从 Xcode 6 切换到 Xcode 7 GM 我发现这些是文件大小贡献最大的 10 个 ipa创建自Archive操作在一个Release构建配置 u
  • 新的 iTunes 连接界面错误“您必须选择一个版本”

    当尝试将我的新应用程序提交到应用程序商店时 我注意到苹果已经更改了其网站界面 更新元数据和关键字并点击 提交审核 后 我收到错误 您必须选择一个版本 通过谷歌搜索 我没有找到答案 但是 我注意到 构建 标题旁边有一个加号按钮 您必须在其中选
  • iOS:接收“304 Not Modified”响应时 AVPlayerItem 中的错误

    这是一个非常奇怪的错误 我有一个 tableView 每个单元格都使用AVPlayer从远程服务器流式传输视频 想象一下类似 Vine 的时间线 因此 当我滚动时 重复使用的单元格会使用新视频重新配置播放器 问题是 如果我非常快地来回滚动
  • iOS TestFlight - 外部测试人员未收到新版本通知

    我已经向外部 TestFlight 用户提供了一个应用程序 他们已收到电子邮件并按预期安装了应用程序 他们有版本 1 0 Build 1 不过 我现在已经上传了一个新版本 版本 1 0 版本 2 这已获得批准 在外部测试页面中 我添加并选择
  • iOS 9.3 出现新的 UIPDFPageRenderOperation 错误?

    我正在向 UIWebView 添加一些 PDF 链接 每次加载并做出滚动手势时 都会收到此错误 objc 910 UIPDFPageRenderOperation 对象 0x14acaca10 过度释放 当已经解除分配时 打断 objc o
  • Xcode 和 Waze 集成

    我正在尝试整合我的app with waze http www waze com 有人知道如何调用位智并发送坐标吗 我没有找到任何 API 或其他相关信息 void navigateToLatitude double latitude lo
  • 如何在 Cocoa with Core Data 中上传和存储文件?

    我有一个应用程序 我希望能够将文件上传到其中 我可以想象序列化数据 将其放入数组中 然后序列化数组并将其放入核心数据中 但这似乎不太正确 我还可以想象将文件复制到应用程序的支持文件中 获取这些文件的 NSURL 并存储数组或 NSURL 无
  • 奇怪的 Facebook ID [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有两个 Facebook 应用程序 它们都正在开发中 其中一个是很久以前创建的 而另一个则是相当新的 自从我升级到新的 iOS Faceb

随机推荐

  • 如何限制谁可以 iframe 嵌入我的网络应用程序?

    限制 Web 应用程序可以嵌入 iframe 的网站的最佳 最安全 方法是什么 例如 所有不在名单上的人都应该被拒绝 www myFriend com www anotherfriend com www myThirdFriend com
  • 我应该使用什么类型来表示 C 枚举的二进制?

    据我所知 C 枚举是无符号整数 但这可能因实现而异 我应该为二进制表示形式的枚举使用什么类型 附注 二进制表示 是指字节数组 我想将枚举值序列化到套接字以与其他程序进行互操作 由编译器决定是否使用int代表一个enum类型 或一个long
  • Quartz.NET 服务器文档

    下载 Quartz NET 时 它包含一个带有控制台应用程序的服务器组件 网站 常见问题解答和 API 文档没有提及任何相关内容 有人知道更多关于它的信息或者知道我在哪里可以找到更多关于它的文档吗 谢谢 帕特里克 那么你可以加入Quartz
  • 在哪里可以找到使用 C# /// xml 文档注释的好示例? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找 NET XML 样式源代码注释和所有可用的各种标签的一些很好的示例 我在哪里可以找到一些好的
  • 如何使用 Windows + WSL2 在 Pycharm 中配置 Poetry 环境?

    TL DR 无法使用 WSL 中的现有 Poetry 环境在 PyCharm Windows 上配置 Python 解释器 当尝试设置 Poetry 环境路径时Add Python Interpreter gt Poetry Environ
  • GAE:使用 testbed 和 webtest 测试 blob 的下载

    我将 blobstore 与我的 Google App Engine 应用程序一起使用 并且在生产服务器和开发服务器上一切正常 使用测试台进行测试和webtest http webtest pythonpaste org 但是 不起作用 在
  • 检查 Discord 机器人是否在线

    我试图做到这一点 以便我的机器人一次只能连接到 Discord 而另一个仅在另一个未连接时才连接 我怎样才能做到这一点 我在用着不和谐 py https pypi org project discord py 另外 如果可能的话 我希望它能
  • 创建和使用带有代理对的字符串

    我必须使用上面的代码点0FFFF 特别是数学脚本字符 并且尚未找到有关如何执行此操作的简单教程 我希望能够 a 创建Strings 具有高代码点 并且 b 迭代其中的字符 自从char不能保留这些点我的代码如下所示 Test public
  • Colorbox 中的 CKEditor 加载不起作用 [ Google Chrome ]

    我在我的项目中使用 Colorbox 我已将 CKEditor 集成到 colorbox 中 它在所有浏览器中工作正常 但在 Google Chrome 中存在一个小问题 编辑器将在第一次单击时正确打开 关闭弹出窗口并在不加载页面的情况下第
  • 从插入触发器后调用存储过程

    也许是一个愚蠢的问题 如果我从插入后触发器 T SQL 调用存储过程 那么如何获取 刚刚插入 数据的值 例如 CREATE TRIGGER dbo MyTrigger ON dbo MyTable AFTER INSERT AS BEGIN
  • 将 NSString 转换为 cString 以与 CGContextShowTextAtPoint 一起使用

    我正在使用 CGContextShowTextAtPoint 绘制一个字符串 因此我需要将我想要绘制的 NSString 转换为 c 字符串 不幸的是 诸如欧元货币符号之类的特殊符号未正确显示 CGContextSelectFont cur
  • 合并霍夫线

    我的代码卡在了某一点 首先简短说明一下我正在做的事情 作为输入 有一张地板的图像 使用 Canny 和 HoughLinesP 算法 我想将整面墙分割成许多 小 部分 正如您在这里看到的那样 同时理想的输出 这里没有精明 我想得到 两条红线
  • 刷新 Spotify 令牌 iOS SDK 时遇到问题

    我对如何使用刷新令牌服务感到困惑 在我的应用程序中有一个包含许多播放列表的部分 当用户单击播放列表时 它会运行以下代码 func checkAuth print checking auth let auth SPTAuth defaultI
  • Node JS请求模块不发送表单数据

    我正在使用 Node js 中的 请求 模块发出发布请求 如下所示 request post url http localhost 4004 api v1 notifications post form msg msg userID use
  • Vuejs 元素值变化事件?

    我有一个元素想要观察这样的变化 span class lower 50 span 用 vuejs 可以干净地做到这一点吗 我尝试查看文档 但找不到类似的内容 我想在 VueJs 中每当 50 更改为其他内容时启动一个自定义事件 你有没有尝试
  • SQL Server 2005 中外键与复合主键的关系

    我有两张桌子 Table1 FileID BundledFileID Domain and Table2 FileID FileType FileName 表2中FileID and FileType是复合主键 我想创建一个外键关系Tabl
  • angularjs ng-options嵌套json数据

    我正在为我的网络应用程序使用 AngularJS 我的目标是使用两个下拉列表ng options 第一个下拉列表显示国家 地区列表 另一个给出所选国家 地区的语言首选项 作为 AngularJS 的新手 我能够显示数据 但整个对象显示为单个
  • 获取 Composable 中状态的先前值 - Jetpack Compose

    假设我的代码如下所示 Composable fun ExampleList val tickers by exampleViewModel tickers observeAsState LazyColumn items items tick
  • 如何禁止临时工

    对于 Foo 类 有没有办法在不给它命名的情况下禁止构造它 例如 Foo hi 并且仅在您给它一个名称时才允许它 如下所示 Foo my foo hi 第一个的生命周期只是语句 第二个是封闭块 在我的用例中 Foo正在测量构造函数和析构函数
  • iOS 中 opengl 顶点数据的对齐有多重要

    OpenGL ES 编程指南讨论了应该避免未对齐的顶点数据 并给出了将数据对齐到 4 字节块的示例 OpenGL ES 编程指南 http developer apple com library ios documentation 3DDr