Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 能够多次附加/链接着色器有什么意义?_Performance_Opengl_Shader - Fatal编程技术网

Performance 能够多次附加/链接着色器有什么意义?

Performance 能够多次附加/链接着色器有什么意义?,performance,opengl,shader,Performance,Opengl,Shader,对于OpenGL,有一点我并不完全理解:根据我所阅读的所有内容,您可以通过编译着色器来获得最佳性能,只要编译的时间足以将其附加到程序,然后建议您删除着色器本身以释放内存,并跟踪程序,直到删除为止 所以我的问题是:如果上述是真的,那么在创建程序后,能够附加着色器并重新链接程序的目的是什么?仅仅创建第二个着色器程序并在场景创建期间在它们之间交换,而不是分离/附加和重新链接程序,不是更有效吗 通过将着色器编译到足以将其附加到程序的足够长的时间,可以获得最佳性能,然后建议您删除着色器本身以释放内存,并跟

对于OpenGL,有一点我并不完全理解:根据我所阅读的所有内容,您可以通过编译着色器来获得最佳性能,只要编译的时间足以将其附加到程序,然后建议您删除着色器本身以释放内存,并跟踪程序,直到删除为止

所以我的问题是:如果上述是真的,那么在创建程序后,能够附加着色器并重新链接程序的目的是什么?仅仅创建第二个着色器程序并在场景创建期间在它们之间交换,而不是分离/附加和重新链接程序,不是更有效吗

通过将着色器编译到足以将其附加到程序的足够长的时间,可以获得最佳性能,然后建议您删除着色器本身以释放内存,并跟踪程序,直到将其删除

此活动对渲染性能没有影响;它可能有助于减少驱动程序对内存的使用,但不会帮助您更快地在屏幕上显示三角形。编译着色器的过程是在编译程序之后建模的,您的注释与编译完整可执行文件之后删除对象文件的注释相同

创建程序后,能够附加着色器并重新链接程序的目的是什么

这样可以跳过重新编译程序所需的所有着色器,而仅重新链接已编译的着色器(与链接的着色器程序不同)以生成新程序。再次使用并行构建可执行文件,就像使用一组不同的对象文件来创建一个新的可执行文件。您不需要从源代码重新编译所有内容,只需将适当的文件提供给链接器即可

仅仅创建第二个着色器程序并在场景创建期间在它们之间交换,而不是分离/附加和重新链接程序,不是更有效吗

当然,这是业内许多人的想法。虽然性能取决于您正在使用的OpenGL驱动程序实现,但根据常识,仅将新着色器“加载”到管道中要比更新状态以配置着色器程序链接、执行链接然后“加载”新着色器更快

通过将着色器编译到足以将其附加到程序的足够长的时间,可以获得最佳性能,然后建议您删除着色器本身以释放内存,并跟踪程序,直到将其删除

此活动对渲染性能没有影响;它可能有助于减少驱动程序对内存的使用,但不会帮助您更快地在屏幕上显示三角形。编译着色器的过程是在编译程序之后建模的,您的注释与编译完整可执行文件之后删除对象文件的注释相同

创建程序后,能够附加着色器并重新链接程序的目的是什么

这样可以跳过重新编译程序所需的所有着色器,而仅重新链接已编译的着色器(与链接的着色器程序不同)以生成新程序。再次使用并行构建可执行文件,就像使用一组不同的对象文件来创建一个新的可执行文件。您不需要从源代码重新编译所有内容,只需将适当的文件提供给链接器即可

仅仅创建第二个着色器程序并在场景创建期间在它们之间交换,而不是分离/附加和重新链接程序,不是更有效吗

当然,这是业内许多人的想法。虽然性能取决于您正在使用的OpenGL驱动程序实现,但根据常识,仅将新着色器“加载”到管道中要比更新状态以配置着色器程序链接、执行链接然后“加载”新着色器更快