Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.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

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 在ARKit中使用GL着色器中的纹理_Ios_Swift_Scenekit_Arkit - Fatal编程技术网

Ios 在ARKit中使用GL着色器中的纹理

Ios 在ARKit中使用GL着色器中的纹理,ios,swift,scenekit,arkit,Ios,Swift,Scenekit,Arkit,我正在尝试使用GLKTextureLoader将纹理加载到用GLSL编写的自定义着色器中。它可以加载所有顶点和片段着色器位,但当我尝试加载纹理时,它会退出 这就是我试图实现它的方式: do { guard let CGImage = #imageLiteral(resourceName: "image01").cgImage else { print("no CGImage"); return nil} let texture = try GLKTextureLoader.t

我正在尝试使用GLKTextureLoader将纹理加载到用GLSL编写的自定义着色器中。它可以加载所有顶点和片段着色器位,但当我尝试加载纹理时,它会退出

这就是我试图实现它的方式:

do { 
    guard let CGImage =  #imageLiteral(resourceName: "image01").cgImage else { print("no CGImage"); return nil}
    let texture = try GLKTextureLoader.texture(with: CGImage, options: nil)
} catch {
    print("Texture not loaded", (error))
}
它似乎获取CGImage,但在
GLKTextureLoader.texture
位失败。 以下是错误:

Error Domain=GLKTextureLoaderErrorDomain Code=17 "(null)" UserInfo={GLKTextureLoaderErrorKey=Invalid EAGL context}
我已尝试使用
NSLog(“GL Error=%u”,glGetError())记录GL错误但这只会给我
GL Error=0


这是我和斯威夫特一起尝试的第一个真正的项目,有什么明显的遗漏吗?或者将ARKit与GLSL着色器混合是不可能的?

您使用自定义着色器的渲染器是什么?如果使用的是
ARSCNView
,则不会获得GL着色器,因为渲染器始终使用金属材质。(SceneKit自动将用GLSL编写的材质球转换为金属材质球,但这些材质球不会引用GL纹理。)我使用的是ARSCNView。顺便说一下,非常感谢您的评论。如何在ShaderModifier中放置顶点和片段着色器?我需要实现一个自定义着色器,使模型以奇特的效果显示。如何在没有textureloader的情况下添加纹理?