- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我读到在 OpenGL 2(尤其是 ES)中优化非透明对象渲染顺序的最佳方法是优先避免上下文更改(绑定(bind)不同的缓冲区、着色器程序等)而不是深度排序。
如果你用一个已经绑定(bind)的缓冲区调用 glBindBuffer,或者用一个已经是当前程序的着色器程序调用 glUseProgram,等等,它们是否仍然会导致低效的管道刷新,或者库是否足够聪明以识别它们作为 NOOP?如果我可以在需要时绑定(bind)所有内容,而不必跟踪已经绑定(bind)的内容并检查它,这将使我的代码更简单。
最佳答案
也许吧。这个真的不能笼统的回答。它完全取决于实现。
驱动程序是否应该检查冗余状态更改是一个有点哲学性的讨论,您不会就此达成共识。因此,您应该期望不同的供应商以不同的方式处理它,而且我什至不一定假设它对同一驱动程序中的所有状态的处理都是一致的。
如果您的目标是特定平台,则应该对其进行衡量。幸运的是,这很容易进行基准测试。如果您想涵盖广泛的平台/供应商,我会尽量减少冗余状态更改。至少如果你可以选择相对便宜地做到这一点。如果为此增加大量开销,则弊大于利。
对此意见不一的主要原因是检查冗余状态更改并非完全免费。如果司机这样做,开销将适用于每个人。写得很好的应用程序(不会进行不必要的状态更改)为有利于写得不好的应用程序的优化付出了代价。你可以说这是非常不公平的。
实际上,通常会进行这些检查,尤其是在状态更改本身相当昂贵的情况下。当然,如果状态更改非常便宜,则不值得添加检查。这些检查通常是由重要应用程序/游戏基准的性能优化驱动的。不幸的是,许多应用程序/游戏使用 OpenGL 的效率非常低,驱动程序必须为重要的基准测试产生尽可能好的结果。在这些情况下,过滤掉冗余状态更改是一种常见的优化。
关于opengl-es-2.0 - 使用与以前相同的值调用 glBindBuffer、glUseProgram 等是否效率低下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27890361/
我是 firebase 的新手,我正在尝试分页查询。我喜欢有一个“下一个”和“上一个”按钮。我的下一个按钮工作正常,我的问题是单击上一个 引用:https://firebase.google.com/
抱歉,标题这么蹩脚,但我只是不知道该放什么,希望你能理解。另外,我不知道以前是否有人问过类似的问题,因为我不知道合适的关键字 - 因此也无法用谷歌搜索。 基本上...在查看preg_match_all
我想在 TFS 中 check out 一个检入文件的先前版本。我可以轻松获得特定文件的变更集 ID 列表,但无法弄清楚如何 checkout 以前的版本。 我目前的代码: var workspace
我想使用 @FunctionalInterface来 self 代码中的 Java 8,但我希望能够将生成的类文件与 Java 6 一起使用。我认为我应该将源版本设为 1.8 , 目标版本为 1.6
自从 versions 被删除以来,我一直无法找到安装以前版本软件的方法。命令并点击 Homebrew。我在 2008 Mac Pro (3,1) 上运行 macOS 10.14.3 (Mojave)
当我开始当前的项目时,App Store 中已经有一个应用程序。此应用程序仅适用于 iPhone。 我的第一个任务是测试和构建一个也可以在 iPod Touch 上运行的版本。 大约 3 周前,App
我在 GitHub 上有一个曾经是 fork 的 repo,但现在不是了,因为我已经删除了原始项目的任何痕迹并开始了一个同名的新项目。 但是,GitHub 仍然表示该项目是 fork 的。有什么方法可
我是一名优秀的程序员,十分优秀!