小编Mat*_*rty的帖子

使用OpenGL ES 2.0渲染多个对象

我正在尝试学习OpenGL ES 2.0来做一些iPhone游戏开发.我已经阅读了多个教程和一些OpenGL ES 2.0规范.我见过的所有例子都创建了一个网格,将其加载到顶点缓冲区然后渲染它(带有预期的平移,旋转,渐变等)

我的问题是:如何渲染场景中具有不同网格并独立移动的多个对象?如果我有一辆汽车和一辆摩托车,我可以创建2个顶点缓冲区并为每个渲染调用保留两个网格数据,然后为每个对象发送不同的着色器矩阵吗?或者我是否需要以某种方式转换网格然后将它们组合成一个网格,以便它们可以一次渲染?我正在寻找更多的高级策略/程序结构而不是代码示例.我想我的错误心理模式是如何运作的.

谢谢!

opengl-es-2.0

31
推荐指数
2
解决办法
2万
查看次数

NSURLSessionDownloadTask在后台停止,在前台恢复缓慢

我正在使用此代码创建后台会话...

    let configuration = URLSessionConfiguration.background(withIdentifier: UUID().uuidString)  
    configuration.sessionSendsLaunchEvents = true  
    configuration.isDiscretionary = false  
    self.session = Foundation.URLSession(configuration: configuration, delegate: self, delegateQueue: nil)  
Run Code Online (Sandbox Code Playgroud)

...并使用以下代码下载任务:

    let downloadTask = self.session.downloadTask(with: request as URLRequest)         
    downloadTask.resume()  
Run Code Online (Sandbox Code Playgroud)

我的请求对象如下所示:

    let request = NSMutableURLRequest(url: someURL)  
    request.httpMethod = "POST"  
    request.addValue("application/json", forHTTPHeaderField: "Content-Type")  
    do {  
        try request.httpBody = JSONSerialization.data(withJSONObject: someDictionary, options: JSONSerialization.WritingOptions())  
    } catch let error as NSError {  
        // logging calls  
    }  
Run Code Online (Sandbox Code Playgroud)

正在下载的资源是大约20MB的zip文件.

我可以在前台运行四个并发下载而没有任何问题.调用所有预期的委托方法,并以正常速度完成传输.

我看到的问题是,如果我在前台开始下载然后点击主页按钮,下载有时会停止.我已经尝试保持设备唤醒,网络旋转一小时,传输仍然无法在后台完成.此外,当我将应用程序带回前台时,传输不会立即重新开始.如果我让应用程序坐在前台约4分钟,他们会醒来并重新开始工作.它们以应用程序进入后台时的完成百分比恢复,并将以正常速度传输直至完成.在任何时候都没有任何错误,转移最终是成功的.它只是在后台"消失",当应用程序回到前台时恢复非常慢.

我在运行iOS 10的iPhone 6上进行测试.我没有连接到Xcode或外部电源,我正在推出应用程序.我可以通过WiFi和蜂窝连接重现这个问题.我删除了该应用并重新加载了多次.

我无法跟踪此问题,因为大约20%的时间它工作正常.我没有发现任何特定的变量集导致它一致地工作或失败.当发生多次下载时,似乎更频繁地发生,并且在那种情况下,所有下载都表现出上述行为.

任何指导将不胜感激!

马特

background transfer ios nsurlsession nsurlsessiondownloadtask

5
推荐指数
1
解决办法
819
查看次数