小编Tay*_*lor的帖子

Xcode:在目标之间移动大量文件

我正在尝试将文件从一个目标的Compile Sources构建阶段移动到另一个目标的Compile Sources构建阶段(相同的项目,没有实际移动磁盘上的文件).Xcode(5.1.1和6-beta)都不会让我拖放文件,手动重新添加它们将是乏味的.

这些文件分布在不同的组之间,因此选择它们并更改目标成员资格复选框也很繁琐.

有没有快速的方法在目标之间移动多个文件?

xcode

6
推荐指数
0
解决办法
800
查看次数

为什么std :: shared_ptr没有运算符 - >*?

为什么std :: shared_ptr没有operator->*

使用可变参数模板看起来很容易.

有关详细信息,请参阅此文章.

编辑:这似乎是一个潜在的重复:关于shared_ptr和指向成员运算符的指针` - >*`和`std :: bind`

c++ shared-ptr variadic-templates

6
推荐指数
1
解决办法
391
查看次数

如何在没有沙盒的情况下运行沙盒OS X应用程序?

我有一个使用沙盒运行的应用程序.如何在没有沙盒的情况下运行它?假设我不能只用沙盒重新编译应用程序.

macos cocoa mac-app-store appstore-sandbox

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

优化基于 OpenGL 的动画/可缩放 2D UI 渲染的策略

我已经为我的应用程序的 UI 构建了一个基于场景图的渲染系统(如果您好奇,请访问http://audulus.com)。该应用程序的 UI 是程序化的,其中很多都是动画的。很少有预渲染的图像。

目前,它在 mipmapped 纹理中缓存不变的可绘制组。我使用 mipmap 是因为 UI 是可缩放的。总的来说,这是一个巨大的性能胜利,但有几个缺点:

  1. 构建 mipmap(通过 glGenerateMipmap)需要时间,当 UI 的一部分从动画变为静态时会降低帧速率。

  2. 纹理缓存几何体与未缓存几何体之间的视觉差异,导致轻微闪烁。(也许可以通过更聪明地处理我的路径渲染代码来解决这个问题,但这似乎很难)

  3. 所有纹理的内存使用情况(我可以转储屏幕外的纹理,但这会加剧问题 1)

我想到的几种替代方法:

  1. 代替纹理缓存,将静态路径合并为更大的路径。我的路径已经基于 VBO/VAO,但这可以减少 GL 调用的数量。(关闭纹理缓存时,我的性能主要受 CPU 限制)。在内存使用方面大获全胜。这种方法的主要问题是:使我的路径渲染着色器复杂化(因为它必须在对 glDrawArrays 的一次调用中处理具有不同属性的路径),不处理其他基元(例如文本)的缓存,以及更多的 GPU 负担而不是简单地渲染纹理。

  2. 仍然使用纹理,但避免 mip-mapping。随着 UI 缩放,纹理可以调整大小(尽管这可能不得不推迟,因为在缩放期间重新渲染整个 UI 成本太高)。删除屏幕外几何体的纹理。缺点当然是在 UI 缩放过程中纹理放大/缩小效果不佳。

更新

我试过(2)。调整纹理的大小很慢,所以我阻止 UI 在缩放过程中调整它们的大小。这工作得相当好,但是当缩放开始很小时,放大倍数看起来很糟糕:

放大倍率不佳

请注意,某些模块没有纹理缓存,因为它们被标记为动画。

更新 2

我开始研究方法 1,所以我停用了纹理缓存。

尽管我受 CPU 限制,但实际上我所有的 GPU 端负载都来自我的路径抗锯齿片段着色器。这是它的性能:

Path-AA 着色器处于活动状态时的性能

关闭它:

禁用 Path-AA 着色器的性能

因此,进一步优化将是 GPU 方面的一大胜利。我尝试放弃它并使用 4x 超级采样,但这看起来很垃圾,提醒我为什么我花了大量时间在路径渲染着色器上。

gpu 2d opengl-es mipmaps

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

AVAudioEngine:有什么方法可以控制缓冲区大小(延迟)?

我编写了一个 V3 AudioUnit 并使用AVAudioUnit. 我的渲染回调使用 512 帧进行调用,这对于我的应用程序(合成器)来说延迟太高。

有没有办法AVAudioEngine设置处理缓冲区大小?或者我需要直接使用CoreAudio?

注意:这是在 OS X 10.11 上。

macos core-audio avaudioengine

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

swift数组removeLast非常慢

调用removeLast非常慢(弹出77k元素需要几分钟).该文件说,O(1),我认为实施将简单地减少数组的大小.显然不是:

堆栈跟踪指示<code>remove(at: Int)</code>?</p>

<p>这个repro的情况比我想象的慢(我习惯了C++的<code>std::vector</code>性能),但仍然没有我在代码中看到的那么慢:</p>

<pre><code>var array = [ Int ]()

for i in 0..<262144 {
   array.append(i)
}

print (Run Code Online (Sandbox Code Playgroud)

我的机器需要16秒.等效的C++程序需要.002秒.

arrays swift

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

如何在 std::function 中捕获 unique_ptr

我需要将 a 移至关闭unique_ptr状态std::function。我在 C++14 中使用通用 lambda 捕获。

auto ptr = make_unique<Foo>();

// Works.
auto lambda = [p = move(ptr)] { };

// This does not compile.
std::function<void()> func = [p = move(ptr)] { };
Run Code Online (Sandbox Code Playgroud)

它试图将 lambda 捕获复制而不是移动到std::function. 相关错误是:

 copy constructor of '' is implicitly deleted because field '' has a deleted copy
      constructor
  std::function<void()> func = [p = move(ptr)] { };
Run Code Online (Sandbox Code Playgroud)

这里的例子会让这看起来可行。

请注意,这里的答案只是重复 isocpp.org 上的示例。

我可以移动到 ashared_ptr如下:

shared_ptr<Foo> …
Run Code Online (Sandbox Code Playgroud)

c++ c++14

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

线程组atomic_uint 的初始值是否为零?

初始值是否为零threadgroup atomic_uint?我在 MSL 规范中没有看到任何内容。或者我是否需要执行类似以下操作将其初始化为零?

threadgroup atomic_uint flags;
if(localIndex == 0) {
    atomic_store_explicit(&flags, 0, memory_order_relaxed);
}

threadgroup_barrier(mem_flags::mem_threadgroup);
Run Code Online (Sandbox Code Playgroud)

ios metal

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

SwiftUI 等值视图优化

我按照本文中的步骤通过自定义比较来提高 SwiftUI 性能。现在,我只是true返回==

struct MyView: View, Equatable {
   
   @ObservedObject var model: DataModel
   
   static func == (lhs: Self, rhs: Self) -> Bool {
       return true
   }

   var body: some View { ... lots of stuff ... }

}
Run Code Online (Sandbox Code Playgroud)

我习惯.equatable()把它包裹MyViewEquatableView使用它的地方。

然而,在 SwiftUI 工具中,每当发生变化时,我仍然会看到整个视图被重建DataModel。并且调试器确认该body调用。==也称为。

我的理解是,如果比较时返回 true,body则不应调用。==那是对的吗?

我该如何进一步调查此事?

macos swift swiftui

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

SwiftUI NSTitlebarAccessoryViewController

我想使用 SwiftUI 应用程序生命周期,但我的应用程序用于NSTitlebarAccessoryViewController在工具栏下方显示工具选项栏:

工具栏

具体来说,我这样做:

        let toolSettingsView = NSHostingView(rootView: ToolAccessoryView(model: model))
        let vc = NSTitlebarAccessoryViewController()
        vc.view = toolSettingsView
        vc.fullScreenMinHeight = accessoryHeight // Ensure tool settings are visible in full screen.
        toolSettingsView.frame.size = toolSettingsView.fittingSize
        window?.addTitlebarAccessoryViewController(vc)
Run Code Online (Sandbox Code Playgroud)

有没有一种(实用的)方法可以使用纯 SwiftUI 模仿控件外观(滑块等)?当使用 SwiftUI 视图时,我得到了这个:

在此处输入图片说明

代码如下所示:

struct MainView: View {
    
    var model: DataModel
    var undoManager: UndoManager
    
    var body: some View {
        VStack {
            ToolAccessoryView(model: model)
            SculptingView(model: model, undoManager: undoManager)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

macos swiftui

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