我CAMetalLayer
背景色为黑色,即使我指定新的颜色作为backgroundColor
财产。变化CAMetalLayer背景颜色
我错过了什么?谢谢!
链接到原项目:
https://github.com/audiokit/MetalParticles
我CAMetalLayer
背景色为黑色,即使我指定新的颜色作为backgroundColor
财产。变化CAMetalLayer背景颜色
我错过了什么?谢谢!
链接到原项目:
https://github.com/audiokit/MetalParticles
本项目以一个相当非常规的方式来每帧清除可绘制的质地:它用零的阵列的尺寸与相同的纹理代替纹理内容(宽度×高度×4)。随后,它编码实际绘制粒子的一些计算工作。这几乎肯定不会达到这种效果的最有效方法,但如果你想能够工作(而不是与使代码尽可能高效试验)最小化,只需填写blankBitmapRawData
阵列所需清晰的颜色(靠近ParticleLab.swift的第82行)。
嘿warrenm。你永远是这样的耐心和真棒导师!我试图理解我怎么能做到这一点,blankBitmapRawData期望[UInt8]。我试着分配它[1,1,1,1](RGBA)。但它并不奏效。你能指导我如何为blankBitmapRawData提供清晰/白色的颜色吗? –
由于组件是'UInt8's,因此您需要指定范围为0-255,而不是0.0-1.0。 – warrenm
我试过[255,255,255,255]和[255,255,255],结果是:http://prntscr.com/bk6fq4 ..啊:\我们错过了什么吗? –
我已经通过您的代码了,不能看到你设置背景颜色的地方。
该金属层添加作为子层,所以必须显式地设置它。
在ParticialLab
类的init方法的末尾添加此行,看看它是否工作。
self.backgroundColor = UIColor.redColor().CGColor
仍然是黑色..作为warrenm建议,它可能与呈现/计算的子层有关,但我不明白我应该在哪里放置renderPassDescriptor。 (请参阅他对上述问题的评论) –
他建议创建一个renderPassDescriptor并设置颜色附件,然后通过在 –
https://developer.apple.com/library/prerelease/content/documentation/中传递renderPassDescriptor创建一个MTLRenderCommandEncoder Miscellaneous/Conceptual/MetalProgrammingGuide/Render-Ctx/Render-Ctx.html –
可以添加你的代码有更好的理解这是怎么回事 –
如果你做任何渲染,你还需要设置你的渲染过程描述符的主附色清晰的色彩。例如:'renderPassDescriptor.colorAttachments [0] .clearColor = MTLClearColorMake(1,1,1,1); renderPassDescriptor.colorAttachments [0] .loadAction = MTLLoadActionClear;' – warrenm
hey @warrenm!据我所知,它使用计算而不是渲染。我几乎迷失在代码中。为了您的方便,我附上了原始项目! –