小编car*_*ath的帖子

从未收到Android WiFi Direct WIFI_P2P_PEERS_CHANGED_ACTION

我正试图通过WiFi直接为Android制作多人游戏.我按照http://developer.android.com/training/connect-devices-wirelessly/wifi-direct.html上的说明操作,以便连接到设备.

我使用的ActionListener discoverPeers()成功返回,但后来我从未收到WIFI_P2P_PEERS_CHANGED_ACTION我打电话的意图requestPeers().奇怪的是,当我在一台设备上进入WiFi直接系统设置时,另一台设备能够通过我的应用程序成功检测到它.我是否需要在我的应用程序中发现我的设备?我还没有找到任何表明在Android开发者资源中有关WiFi P2P的信息.有WiFi直接用于服务发现,但这完全不同,不是吗?

android wifi-direct

12
推荐指数
1
解决办法
1007
查看次数

使用 NSFetchedResultsController 数据源实现 UITableViewDataSourcePrefetching

我有一个 UITableView 可以从NSFetchedResultsController. 为此,我基本上从https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/nsfetchedresultscontroller.html复制了 Apples 示例实现。

现在在 WWDC16 上,Apple 宣布了该UITableViewDataSourcePrefetching协议,该协议提供了回调,让您可以预取数据,以便在需要由 tableview 显示时已经加载。我正在寻找有关如何将其与 集成的示例NSFetchedResultsController,因为我无法确定我是否正确执行此操作。

  • 我应该简单地创建一个字典作为内存缓存来保存预取数据并用于cellForRowAtIndexPath而不是fetchedResultsController.object(at: indexPath)直接查询吗?
  • 据我了解,CoreData 已经自动缓存获取的数据,所以也许我只需要调用fetchedResultsController.object(at: indexPath)预取回调,以确保数据被缓存?
  • 或者我不应该在使用获取的结果控制器时预取数据,因为我会解决 Apple 提供的神奇集成?
  • 或者完全是别的什么?

*编辑*:我在 WWDC16 上的 Core Data 演讲中找到了一张幻灯片,据说可以解释这一点,但我完全理解。

在此处输入图片说明

  • 异步获取请求?我以为他们不与NSFetchedResultsController. 我想这就是为什么它managedObjectContext直接执行?
  • 异步读取请求从调用的结果产生.performFetch()NSFetchedResultsController。在我打电话之前什么都没有出现。但是由于调用它后所有结果都在那里,我不明白为什么我需要再次预取它们。

core-data uikit ios swift

7
推荐指数
1
解决办法
3289
查看次数

使用OpenGL进行轮廓/轮廓渲染

我知道有几种技术可以实现这一目标,但它们似乎都不够.

  • 使用sobel/laplace滤波器找不到所有正确的边缘(并找到不需要的边缘),速度很慢,并且无法控制轮廓宽度.

  • 我现在已经解决的问题是首先使用纯色和比实际物体稍大的物体渲染物体的背面.结果看起来不错,但我真的希望我的轮廓具有恒定的宽度.

  • 我已经尝试用粗线框线渲染物体的背面.给我一个恒定的轮廓宽度,但不推荐使用线宽,如果轮廓突然改变方向(例如在多维数据集上),则会产生渲染瑕疵并留下间隙.我还没有尝试使用第三个渲染过程绘制每个顶点的线框线大小的点,因为此技术存在其他问题.

有任何想法吗?

编辑我甚至使用几何着色器自己查找边缘,如http://prideout.net/blog/?p=54中所述,但它与线框技术的差距相同.

编辑我能够通过禁用GL_DEPTH_TESTwhile绘制轮廓来摆脱使用线框技术的渲染工件.不幸的是,我也失去了重叠对象的轮廓......

我的目标是在Dragons Lair 3游戏中获得与角色相同的效果.有谁知道他们是怎么做到的?

opengl

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

使CVDisplayLink +自动参考计数可以很好地协同工作

我最近从使用NSTimer切换到CVDisplayLink来重绘我的OpenGL动画,但是我有一个小问题,它可以在开启ARC时使用它:

/*
 * This is the renderer output callback function.
 */
static CVReturn displayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeStamp* now, const CVTimeStamp* outputTime, CVOptionFlags flagsIn, CVOptionFlags* flagsOut, void* displayLinkContext)
{
  // now is the time to render the scene
  [((__bridge BDOpenGLView*)displayLinkContext) setNeedsDisplay:YES];
  // always succeeds, because we don't actually do anything here anyway
  return kCVReturnSuccess;
}
Run Code Online (Sandbox Code Playgroud)

显示链接回调函数必须用C编写,以用作参数

// set the renderer output callback function
CVDisplayLinkSetOutputCallback(displayLink, &displayLinkCallback, (__bridge void*)self);
Run Code Online (Sandbox Code Playgroud)

所以我不能self在回调中使用内部,但使用((__bridge BDOpenGLView*) displayLinkContext)会产生内存泄漏:

objc[29390]: Object 0x1001b01f0 of class NSConcreteMapTable autoreleased …
Run Code Online (Sandbox Code Playgroud)

cocoa core-animation objective-c automatic-ref-counting

3
推荐指数
1
解决办法
1378
查看次数