- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
网络上没有太多关于它们的深入信息。
它们是如何实现的以及它们在幕后如何工作?我想知道它们是否会导致任何性能开销,特别是在多个子例程的情况下,以决定创建不同版本的着色器的最佳做法是什么:子例程或单独的着色器。
任何信息或建议?
最佳答案
从 OpenGL 论坛引用的一个很好的详细答案 here .
Subroutine variables are pretty much like function pointers in C, or if we have to, we can call them "virtual functions" (as D3D refers to them).
They are probably implemented on all hardware as actual function pointers, i.e. calling a subroutine will translate to an indirect CALL instruction that takes the called address from a register/memory location. Thus you can expect them to likely be more efficient than switch case statements in shaders or switching between multiple shaders.
However, this is all just how it should work, as there could be inefficiencies in some hardware or driver that make them slower than they could be, but that's another story. Also, unfortunately, subroutines have an inherent inefficiency due to the API itself, namely that you have to re-specify the association between subroutine variables and subroutines (using glUniformSubroutinesuiv) every single time you bind a program that has subroutine variables. This is an unfortunate inheritance from D3D, as GL copied this weird behavior from there.
关于opengl - GLSL 4.x 子例程变量会导致任何性能开销吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17706153/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!