Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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
ios OpenGLSL纹理_Ios_Opengl Es 2.0_Glsles - Fatal编程技术网

ios OpenGLSL纹理

ios OpenGLSL纹理,ios,opengl-es-2.0,glsles,Ios,Opengl Es 2.0,Glsles,如果我在场景中有5个3D网格,其中有5个单独的纹理贴图和5个单独的法线贴图,这是否意味着我必须将所有这10个纹理绑定到顶点着色器和片段着色器?如果是这样,现实世界如何实践来优化此场景?考虑到OpenGL ES 2.0仅保证2个纹理单位,并且您几乎肯定不需要在顶点着色器中进行纹理查找。对于此用例,不需要。在片段着色器中使用两个采样器,绑定法线贴图和漫反射贴图,并绘制使用该特定组合的所有对象。更改绑定法线贴图和漫反射贴图,并根据需要多次绘制其余贴图。优化此场景的唯一真正方法是使用纹理地图集。如果Op

如果我在场景中有5个3D网格,其中有5个单独的纹理贴图和5个单独的法线贴图,这是否意味着我必须将所有这10个纹理绑定到顶点着色器和片段着色器?如果是这样,现实世界如何实践来优化此场景?

考虑到OpenGL ES 2.0仅保证2个纹理单位,并且您几乎肯定不需要在顶点着色器中进行纹理查找。对于此用例,不需要。在片段着色器中使用两个采样器,绑定法线贴图和漫反射贴图,并绘制使用该特定组合的所有对象。更改绑定法线贴图和漫反射贴图,并根据需要多次绘制其余贴图。优化此场景的唯一真正方法是使用纹理地图集。如果OpenGL ES 2.0支持实例化,我会有另一个建议,但它不是:-\@AndonM.Coleman无意粗鲁,但我不太理解你的观点。假设我有一个人,一栋房子,一辆车。它们每个都有自己的纹理和法线贴图。人们是如何处理这种情况的,在游戏世界中,几乎总是这样。分别绘制每个具有自己的漫反射贴图和法线贴图的对象。在具有实例的桌面OpenGL中,可以划分纹理单元的数量,有时可以将具有不同纹理贴图的多个对象批处理到单个绘制调用中。但是,在GLE中,必须绘制对象、绑定不同的纹理、绘制更多的对象、绑定不同的纹理等。。最后,您必须为每组纹理贴图发出至少一个绘制调用,或者按照我在前面的注释中解释的那样构建纹理地图集。