小编bri*_*ght的帖子

现代浏览器如何有效地进行平铺渲染(特别是在Direct2D中)?

这个问题与浏览器如何将整个页面呈现为平铺图像有关(而不是在页面中呈现图像.)我最感兴趣的是内存成本.

我的理解是,像Chrome这样的浏览器将布局整个页面,但在小方块中根据需要渲染它的部分.当用户滚动页面时,仅呈现不存在的图块.平铺生成通常发生在后台线程中,但此问题与线程无关.

所以问题是,这种方法的总内存使用量是多少?

我们假设屏幕是1024x768,并且图块是64x64像素.所以屏幕是16x12瓷砖.此外,我假设每个图块是每像素32位,Direct2D是渲染平台,Direct2D SwapChainPanel用于性能.

在给定的渲染周期中,可能只渲染总(16x12)个图块的一小部分.但是,这个数字可能不止一个.因此

  1. 在我看来,1024x768的临时位图最方便渲染当前无效的图块.
  2. 然后将有效部分复制到大小为64x64的实际图块位图上,以便在下一步和将来的渲染周期中使用.
  3. 要渲染的最终位图是通过blitting相应的tile来组成的,其中一些可能是由较早的渲染周期生成的,而另一些则是在此渲染周期中.最终的位图也是1024x768.

因此,除了图块之外,似乎还需要两个全屏尺寸(1024x768)的32bpp位图.

问题:

  1. 浏览器实际上是每像素使用32位还是更低?
  2. 是否需要上面的步骤(3),或者有没有方法直接渲染瓷砖而没有最终的位图?
  3. 是否有任何额外的主内存分配,我可能错过了(例如通过GPU)?

中间副本的数量是一个微妙的,需要仔细考虑,所以我真的很感激准确的答案.请不要猜测.

browser gecko webkit tiles direct2d

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

Web浏览器如何实现字体回退?

我很想知道字体回退在字体整形/渲染堆栈中的位置.换句话说,在什么时候检测到缺少的字形以及它们如何被替换?

我在文档中看到FontConfig工具"透明地基于字形覆盖"进行字体回退.

所以问题是:

  1. 这个算法究竟是如何工作的?
  2. 这是大多数浏览器使用的标准算法 - webkit,gecko(可能不是IE)?
  3. 基于字体内缺少的字形的字体回退如何与CSS字体回退相关(当字体完全丢失时,它指定依次使用哪些字体)?

编辑:我发现这个文件解释了FontConfig的"内容",但没有解释"如何".问题1是关于"如何".

总结一下 - 这篇文章只与一件事有关 - 当字体中缺少字形时,字体回退是如何工作的.

fonts fallback truetype opentype

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

如何使用Visual Studio 2015运行UWP NUnit测试?

这个问题专门针对NUnit运行用C#编写的通用Windows平台(UWP)单元测试.

如何在Visual Studio中发现并运行这些测试?

我在网上找不到关于此的确切文章,这真的很令人惊讶.

c# nunit visual-studio-2015 uwp

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

iOS:QuickType 键盘建议如何与 UITextInput 协议配合使用?

我们有一个使用UITextInput,UIKeyInputUITextInputTraits协议实现的文本输入视图。

基本的文本输入和删除工作正常,通过insertText:deleteBackward。但是,这些方法不会收到 QuickType 建议,而且我无法找到有关 QuickType 如何与这些协议交互的文档。

我应该如何实现这些协议来接收 QuickType 输入?

ios uitextinput uikeyinput uitextinputtraits quicktype

5
推荐指数
0
解决办法
137
查看次数

UWP应用程序包含哪些正确的AppBarButton图标大小?

注意:此问题仅与AppBarButton图标有关.

在编写运行所有外形的UWP应用程序时,我想要包含AppBarButton图标的所有必要变体.

从我到目前为止所读到的内容来看,似乎我需要在五个比例因子中分别使用24x24图标,即100%,125%,150%,200%和400%.换句话说,24x24,30x30,36x36,48x48,96x96.

它是否正确?

另外,如何命名这些以便系统在给定基本名称的情况下正确选择正确的变体?

编辑:我在其他地方读到只需要一个大小,并且Windows UWP在与设备无关的单元中呈现图标(即适当地缩放它).

相比之下,iOS允许将多个图像包含在@ 2x和@ 3x后缀中,Android允许将图像放置在特殊的子目录中,例如dir-hdpi,dir-mdpi,其中dir是基本目录名称.如此看来,UWP并不会有这样的系统,只有一个图标是必要的.此修订后的理解是否正确?

icons appbar button windows-store win-universal-app

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

Evernote用于标签的排序规则是什么?

Evernote的标签不区分大小写,但我无法确切地找到用于此的归类或文化的规范.

标签规范(https://dev.evernote.com/doc/reference/Types.html#Struct_Tag)仅声明"保留案例,但在比较时会被忽略".

问题:究竟正在使用哪种排序规则?

注意:这不是数据库问题.这篇文章吸引了似乎自动将术语"整理"与数据库联系起来的答案.但这是一个Evernote服务器端数据模型问题,最好由Evernote专家或Evernote员工解答.

tags collation evernote

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

数组索引器签名返回对象 - 它是否为空?

我无意中发现的事实是,索引器this[int index] { get; }的工作方式不同的结构数组比它的结构的列表.也就是说,索引器在T[]返回对数组内元素的引用的情况下,而索引器在List<T>返回元素的副本的情况下.

这是一个非常大的语义和性能差异,我很高兴能够T[]让我们解决性能限制List<T>.

但是,我对实际实施感到困惑.的代码Array由此在.NET参考源如下:

Object IList.this[int index] {
    get { return GetValue(index); }
    set { SetValue(value, index); }
}
Run Code Online (Sandbox Code Playgroud)

其中GetValue定义如下:

public unsafe Object GetValue(int index)
{
    if (Rank != 1)
       throw new ArgumentException(Environment.GetResourceString("Arg_Need1DArray"));
    Contract.EndContractBlock();
    TypedReference elemref = new TypedReference();
    InternalGetReference(&elemref, 1, &index);
    return TypedReference.InternalToObject(&elemref);
}
Run Code Online (Sandbox Code Playgroud)

索引器的返回类型Object意味着将发生装箱.

所以我的问题是,当我访问T[]where T是struct 的元素时,我能确定不会发生装箱吗?

我假设编译器和/或CLR专门处理数组,并且实际上并不打扰索引器的签名.它是否正确?在某个地方有更全面的讨论吗?

.net c# arrays indexer list

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

为什么有两个不同的行使用带有"git config -l"的core.autocrlf输出?

我正试图设定core.autocrlf=true.但是在执行git config --global core.autocrlf true输出后git config -l显示这两行

core.autocrlf=false
... other settings ...
core.autocrlf=true
Run Code Online (Sandbox Code Playgroud)

为什么这样,我怎样才能确保autocrlf正确设置true

git core.autocrlf

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

如何在Visual Studio 2015中很好地禁用文档?

该文档是VS 2015中的功能,当您切换到其他选项卡时,它会自动关闭选项卡,除非您单击选项卡中的"保持打开"按钮.

我觉得这很烦人,因为我经常会在调试过程中打开一个标签只是为了让它消失,之后我必须再去寻找文件.

有没有办法禁用此功能,即保持所有标签永久打开,VS 2013的方式?

我查看了Tools\Options,并进行了快速的网络搜索,但找不到办法.

ide tabs visual-studio visual-studio-2015

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

F#中的C#lambda(=>)语法

是否可以在F#中定义一个=>运算符,使其行为类似于C#的lambda语法?这将允许一个人写

x => y
Run Code Online (Sandbox Code Playgroud)

代替

fun x -> y
Run Code Online (Sandbox Code Playgroud)

我是一个F#初学者,我的直觉告诉我这是不可能的,因为fun看起来像一个特殊的形式.

c# syntax lambda f# operator-overloading

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

将三次贝塞尔曲线转换为基数样条并返回

我读过许多文章,描述了如何将基数或正则样条曲线转换为三次贝塞尔曲线,例如曲线。

有没有办法做相反的事情,即将一组三次贝塞尔曲线转换为基数样条曲线?例如,我们知道每个曲线的端点都在样条线上。

我正在寻找的是一种在信息最少的情况下往返两种表示形式的方法。同样理想地,解应该是稳定的,以便从三次贝塞尔曲线=>基数样条=>立方贝塞尔曲线=>基数样条应在第二次操作后产生相同(或几乎相同)的曲线。

geometry bezier 2d spline

0
推荐指数
1
解决办法
862
查看次数