Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.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 SceneKit着色器修改器未修改几何体';s位置_Ios_Swift_Shader_Scenekit - Fatal编程技术网

Ios SceneKit着色器修改器未修改几何体';s位置

Ios SceneKit着色器修改器未修改几何体';s位置,ios,swift,shader,scenekit,Ios,Swift,Shader,Scenekit,我试图应用一个简单的着色器修改器来移动立方体的位置。立方体的常规漫反射颜色为浅蓝色,但使用此修改器时,它确实会变为红色,因此我知道着色器修改器正在工作(有些)。但是,立方体仍位于屏幕中心的位置(0,0,0),因此着色器修改器不会修改该位置。有什么想法吗 这是密码 let modifier = """ _surface.diffuse = float4(1,0,0,1); _surface.position

我试图应用一个简单的着色器修改器来移动立方体的位置。立方体的常规漫反射颜色为浅蓝色,但使用此修改器时,它确实会变为红色,因此我知道着色器修改器正在工作(有些)。但是,立方体仍位于屏幕中心的位置(0,0,0),因此着色器修改器不会修改该位置。有什么想法吗

这是密码

          let modifier = """
          _surface.diffuse = float4(1,0,0,1);
          _surface.position = float3(10.0,0.0,0.0);
          """
          
          cube.geometry?.shaderModifiers = [SCNShaderModifierEntryPoint.surface : modifier]

洋红色是SceneKit表示着色器编译失败的方式

\u surface.position=float3(10.0,0.0,0.0)


查看SCNShadable.h,我们看到
SCNShaderSurface
位置是
float4
,而不是
float3
,我想你弄错了,它确实是粘贴在代码段中的一个float3(我也刚刚检查了自己),它是你代码中的
float3
,但SceneKit希望是
float4
,参见SCNShadable.h这是我在
SCNShadable.h
-
float3位置中的
\u曲面
结构中看到的;//片段的位置