我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!據我所知,它使用計算而不是渲染。我幾乎迷失在代碼中。爲了您的方便,我附上了原始項目! –