小编Jos*_*rey的帖子

将UIView布局同步到OpenGL帧

我们正在开发一种游戏,其中有2d元素UIViews通过OpenGL ES视图显示(具体来说,我们使用的是GLKit GLKView)并且在保持位置完全同步方面存在问题.

在父视图中layoutSubviews,我们将世界中的3D位置投影到屏幕上,并将其用作UIView游戏中几个"标记"的位置.整个游戏仅响应用户移动相机而更新,并且相机setNeedsLayout每次移动时都会通知视图.

Everthing的工作正常,除了标记似乎与3d渲染大约1帧不同步.我粗略地说,因为(1)这是一个估计!(2)我想知道是否存在多线程问题:不GLKView同步到特殊的屏幕刷新回调或其他什么?

有没有办法挂钩视图的layoutSubviews,以便它同步到3D视图更新?

更新:很奇怪,layoutIfNeeded之后立即拨打电话setNeedsLayout会让问题变得更糟!可能是2帧或更多帧.真的不明白!

layout opengl-es uiview ios

10
推荐指数
1
解决办法
520
查看次数

应该在CALayer上进行栅格化是否会导致图层转换之前或之后的栅格化?

我正在尝试优化我的应用.它在视觉上非常丰富,所以有很多分层的UIViews,有大图像和混合等.

我一直在试验这个shouldRasterize房产CALayers.特别是在一个案例中,我有一个UIView包含许多子视图的表,包括一个表.作为整个屏幕滚动的过渡的一部分,这UIView也可以缩放和旋转(使用变换).

UIView遗体的内容是静态的,所以我认为设置是有意义的view.layer.shouldRasterize = YES.但是,我没有看到性能提升.可能是它在新规模和旋转时重新光栅化每一帧吗?我希望它在开始时会有一个身份变换矩阵进行栅格化,然后在过渡期间进行缩放和旋转时缓存它?

如果没有,有没有办法可以强迫它发生?除了添加一个冗余的额外超级视图/图层,除了缩放和旋转其栅格化内容之外什么都不做......

core-animation calayer ios

9
推荐指数
1
解决办法
5754
查看次数

如何遍历"IDictionary"的键和值?

IDictionary如果我不知道其中的键和值的具体类型,我将如何遍历键和值的值,因此只想将它们视为objects?

如果我这样做:

foreach(var x in myIDictionary) { ... }

我认为x是一个object.但我怎么会得到KeyValue出它(这两个类型为objectS),在指定的IDictionaryEnumerator?有IKeyValuePair没有通用参数吗?

我想我可以手动循环使用枚举器MoveNext等,但我觉得必须有办法做到这一点foreach!

c# idictionary

6
推荐指数
2
解决办法
9755
查看次数

Objective-C文字语法中的未装箱BOOL给出错误

我只是在尝试作为Xcode 4.4的一部分引入的新的Objective-C文字语法.

字典,整数和数组都运行良好,但我一直遇到一个问题BOOL.例如:

NSDictionary *myDict = @{
    @"foo": @"bar",
    @"test": @YES
};
Run Code Online (Sandbox Code Playgroud)

给我"意外的类型名称'BOOL':预期的表达式"在布尔线的行上.

然而@(YES),@1,@true一切工作正常.

本文:http://clang.llvm.org/docs/ObjectiveCLiterals.html建议@YES应该有效.

我也尝试过它自己的行:NSNumber *myNum = @YES;并得到同样的错误.

错误?

objective-c xcode4 objective-c-literals

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

在Mac上的VSCode中构建C#代码

我一直在使用Xamarin构建命令行工具.在被告知Visual Studio Code之后,我想看看我是否可以尝试将它用作编辑器和调试器.

我设法通过编辑文件调试使用Xamarin构建的现有 .exe文件launch.json,并且知道在单步执行代码时要跳转到哪些源文件.

但是,我无法弄清楚如何实际编译新的可执行文件?每当我对源进行任何更改时,它只会调试旧的可执行文件<my project>/<my project>/bin/Debug/<project>.exe,这是Xamarin中的默认值.

它似乎理解源代码本身,因为它有一堆警告.

c# macos command-line-interface xamarin visual-studio-code

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

如何在 VS Code 中使用非基于模块的网站跨多个文件使用 @ts-check?

我正在尝试创建一个非常简单的网站:

  • 一些直接包含在中的 JavaScript 文件index.html
  • 无模块/import语句
  • 没有捆绑系统或直接编译步骤
  • 不需要运行服务器(因此index.html可以双击而不会出现 CORS 问题)

但我希望能够在 VS Code 中使用 TypeScript @ts-checkjsconfig.json并使其能够跨 JavaScript 文件理解代码的全局范围。但是,我发现它无法跳转到 JavaScript 文件之间的定义(或者至少不一致?)。

有没有办法告诉 TypeScript 编译器所有 JavaScript 文件都在全局范围内,并使用正确的求值顺序index.html

javascript typescript ts-check

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

Firestore安全规则:如何验证字段未定义?

当用户注册并在Firestore中初始化数据时,我想确认他们没有尝试设置自己的角色(例如,因此他们没有将其设置为“ admin”)。

我试着这样写:

match /users/{userId} {
  allow create: if (signedInAs(userId) && !request.resource.data.role) || isAdmin();
  ...
Run Code Online (Sandbox Code Playgroud)

...但是我只是看到“对象上的属性角色未定义”。

有没有办法安全地做到这一点?还是这意味着我应该总是初始化期望的字段,即使只是空字符串也是如此?这似乎与NoSQL的哲学不太吻合?

firebase google-cloud-firestore firebase-security-rules

4
推荐指数
1
解决办法
837
查看次数

在采样纹理时使用 GLSL 中的 Floor() 函数会出现故障

这是我所看到的问题的一个 Shadertoy 示例:

https://www.shadertoy.com/view/4dVGzW

我通过从地板纹理坐标中采样来对纹理进行采样:

#define GRID_SIZE 20.0

void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    vec2 uv = fragCoord.xy / iResolution.xy;

    // Sample texture at integral positions
    vec2 texUV = floor(uv * GRID_SIZE) / GRID_SIZE;

    fragColor = texture2D(iChannel0, texUV).rgba;
}
Run Code Online (Sandbox Code Playgroud)

我看到的错误是有时在网格方块之间绘制 1-2 条像素线。

颜色网格

请注意,我们不仅在网络上使用 GLSL ES 时发现了此问题,而且在 Unity 中使用 HLSL 时也发现了此问题。

有什么与floor()我不明白的浮点运算有关吗?!我不仅想知道如何解决它,还想知道为什么会发生这种情况?

floor pixel-shader

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