Asosiy Fikrlar
Renderlash — ma'lumotlarni (uchlar, teksturalar, shaderlar) ekrandagi tasvirga aylantirish jarayoni. Mobil qurilmalarda renderlash CPU (markaziy protsessor) yoki GPU (grafik protsessor) da bajarilishi mumkin. Tanlov grafik turiga va talab qilinadigan samaradorlikka bog'liq.
CPU Rendering — ketma-ket ishlov berish. Har bir ko'rsatma birin-ketin bajariladi. CPU mantiq va tarmoqlanish uchun optimallashtirilgan. Canvas (Android), Core Graphics (iOS) CPU da ishlaydi. Afzallik: aniqlik, murakkab algoritmlarni qo'llab-quvvatlash. Kamchilik: ko'p grafik elementlar bilan sekin. GPU Rendering — parallel ishlov berish. Minglab GPU yadrolari bir vaqtning o'zida uchlar va piksellarni qayta ishlaydi. Metal (iOS), Vulkan (Android), OpenGL ES (ikkala platforma) GPU dan foydalanadi. GPU Rendering 3D, 60 FPS animatsiyalar va murakkab effektlar uchun majburiydir. Zamonaviy UI freymvorklari (SwiftUI, Jetpack Compose, Flutter) sukut bo'yicha GPU dan foydalanadi.
Shaderlar GPU da bajariladigan dasturlardir. Ular ekrandagi har bir ob'ektning qanday ko'rinishini aniqlaydi. Grafik quvur liniyasi bir necha bosqichdan iborat, ammo ikkita asosiy shader — Vertex Shader va Fragment Shader — 99% hollarda qo'llaniladi. Shaderlar GLSL (OpenGL), MSL (Metal) yoki HLSL (DirectX) da yoziladi.
Vertex Shader — 3D modelning uchlarini qayta ishlaydi. Kirish: uchi joylashuvi, normal, UV koordinatalari. Chiqish: o'zgartirilgan joylashuv (model → ko'rinish → proyeksiya). Vertex Shader uchlar yarata olmaydi yoki o'chira olmaydi — faqat o'zgartira oladi. Fragment Shader — rastrlashtirilgan uchburchakdagi har bir pikselning (fragmentning) rangini hisoblaydi. Kirish: Vertex Shader dan interpolyatsiya qilingan ma'lumotlar (UV, normallar). Chiqish: RGBA rangi. Fragment Shader teksturlash, yoritish (Phong, PBR) va post-effektlar uchun javobgardir. Zamonaviy dvigatellar (Unity, Unreal) shaderlarni avtomatik yaratadi, ammo optimallashtirish uchun quvur liniyasini tushunish zarur.
Offscreen Rendering — ekranga emas, balki vaqtinchalik buferga renderlash. Qo'llaniladi: 1) effektlar (blur, shadow), 2) teksturaga renderlash, 3) kadrlarni oldindan hisoblash. Offscreen Rendering qimmat: kontekstni almashtirish va qo'shimcha renderlash o'tishi. iOS soyalar va cornerRadius uchun avtomatik ravishda Offscreen Rendering ni faollashtiradi. Rastrlashtirish — vektor ma'lumotlarini (uchlar + shaderlar) piksellarga aylantirish. Rastrlashtiruvchi qaysi fragmentlar uchburchakka tegishli ekanligini aniqlaydi va Fragment Shader ni chaqiradi. Kompozitsiya — qatlamlarni yakuniy tasvirga yig'ish. Core Animation CALayer larni kompozitsiya qiladi, Android SurfaceFlinger qatlamlarini kompozitsiya qiladi.
| Parametr | CPU Rendering | GPU Rendering |
|---|---|---|
| Arxitektura | Ketma-ket (bir necha yadro) | Parallel (yuzlab-minglab yadrolar) |
| Tezlik | Grafika uchun sekin | Ommaviy operatsiyalar uchun tez |
| Asboblar | Canvas, Core Graphics (Quartz 2D) | Metal, OpenGL ES, Vulkan |
| Qo'llanilish | Oddiy 2D grafik, matn, UI | 3D, animatsiyalar, o'yinlar, murakkab effektlar |
| Iste'mol | Kam energiya | Ko'p energiya, lekin tezroq |
| Overdraw | Yuqori xarajat | Past xarajat (lekin baribir zararli) |
CPU — mantiq va Canvas uchun. GPU — grafik va animatsiyalar uchun. IT Sectr harakatlanuvchi tarkib (animatsiyalar, o'tishlar, aylantirish) uchun GPU renderlashdan foydalanishni tavsiya qiladi — bu barqaror 60 FPS ni ta'minlaydi.
Core Animation — Apple-ning GPU tezlashtirilgan animatsion renderlash freymvorki. Asosiy element CALayer: tarkib (rasm, rang, matn) bilan to'rtburchak maydon. CALayer boshqaradi: joylashuv, o'lcham, fon rangi, chegara, soya, cornerRadius va o'zgartirishlar (2D va 3D). Core Animation avtomatik ravishda GPU da qatlamlarni kompozitsiya qiladi — dasturchi grafik kod yozishi shart emas.
CALayer — tarkib bitmapini o'z ichiga olgan engil ob'ekt (ko'rinish emas). UIButton, UILabel, UIImageView — barchasi ichki CALayer dan foydalanadi. Xususiyatlar: frame, bounds, position, anchorPoint, transform, opacity, masksToBounds. CALayer xususiyatlarining animatsiyasi GPU da sodir bo'ladi — bu Core Animation ning asosiy afzalligidir. CALayer.shouldRasterize — murakkab grafikani keshlash uchun qatlamning rastrlashtirilishini faollashtiradi. CAShapeLayer — vektor grafikasi uchun pastki sinf: GPU da yo'l chizadi. Progress chiziqlari, grafiklar, maskalar va shakl animatsiyasi uchun ishlatiladi. CAShapeLayer.path — animatsiya qilinadigan xususiyat (shakl morfing animatsiyasi).
Kompozitsiya Core Animation da — CALayer larni yakuniy kadrga yig'ish jarayoni. Har bir CALayer GPU da alohida teksturadir. Kompozitsiya Render Server da (alohida jarayon) sodir bo'ladi. Kompozitsiya talab qiladigan xususiyatlar: opacity, shadow, cornerRadius + masksToBounds, shouldRasterize. Qancha kam qatlam — shuncha tez kompozitsiya.
Overdraw — bir kadrda bir xil pikselning bir necha marta bo'yalishi holati. Misol: qizil fon → ko'k to'rtburchak → matn. Markaziy piksel 3 marta chiziladi. Overdraw, ayniqsa eski qurilmalarda UI sekinlashuvining asosiy sababidir. iOS: Debug Color Blended Layers (Xcode) — qizil joylar = aralash (overdraw). Android: Debug GPU Overdraw (Dasturchi sozlamalari) — ko'k (1x) dan qizil (3x+) gacha ranglar.
Overdraw-ni qanday kamaytirish mumkin: 1) shaffof bo'lmagan ko'rinishlar uchun opaque = true dan foydalaning (iOS). 2) Android — android:windowBackground dan faqat bir marta foydalaning. 3) Ko'rinmaydigan qatlamlarni olib tashlang. 4) Qatlamli arxitekturadan foydalaning: fon (1 o'tish) → tarkib (2 o'tish). 5) Keraksiz clipChildren va clipToPadding dan saqlaning. Offscreen Rendering — ekrandan oldin buferga renderlash. Triggerlar: shadow (CALayer.shadow*), cornerRadius + masksToBounds, group opacity, shouldRasterize. Xcode: Debug Offscreen Renderer — sariq joylar = offscreen. Android da: profile GPU rendering — chiziq uzunligini tekshiring.
Vektor Grafikasi — matematik formulalar (yo'llar, egri chiziqlar, to'ldirishlar) bilan tasvirlangan tasvirlar. Vektorlar masshtablashtirilganda sifatini yo'qotmaydi — mobil ilovalarda ikonkalar va illyustratsiyalar uchun ideal.
SVG (Scalable Vector Graphics) — W3C standarti. Mobil OT larda to'g'ridan-to'g'ri qo'llab-quvvatlanmaydi. O'zgartiriladi: iOS da — PDF vektor aktivlariga (Xcode 12+), Android da — Vector Drawable XML ga. Vector Drawable — Android formati. XML da belgilanadi: <vector> bilan <path> va <group>. AnimatedVectorDrawable orqali animatsiyani qo'llab-quvvatlaydi. PDF Vector Assets (iOS) — Assets.xcassets dagi vektor PDF lar. Xcode ularni GPU optimallashtirilgan teksturalarga kompilyatsiya qiladi. SVG va Vector Drawable murakkab effektlarni (blur, gradient mesh) qo'llab-quvvatlamaydi. Fotosuratlar va gradientlar uchun rastr PNG/WebP dan foydalaning.
Tez-tez So'raladigan Savollar
CPU renderlash — markaziy protsessorda ketma-ket chizish. Oddiy 2D grafik va Canvas uchun mos. GPU renderlash uchlar va piksellarni ommaviy qayta ishlash uchun grafik protsessorning parallel arxitekturasidan foydalanadi.
Overdraw — kadr boshiga pikselni bir necha marta chizish. Asboblar: Debug GPU Overdraw (Android), Color Blended Layers (iOS). Normal: ko'k (1x) va yashil (2x). Qizil (3x+) — muammo.
CALayer — Core Animation ning asosiy sinfi. CAShapeLayer — GPU da vektor grafikasi uchun pastki sinf. Ikkalasi ham Core Animation tomonidan boshqariladi va Render Server da kompozitsiya qilinadi.
Vertex Shader — uchlarini qayta ishlash uchun GPU dasturi. Fragment Shader — piksel ranglarini hisoblash uchun GPU dasturi. Birgalikda ular grafik quvur liniyasini amalga oshiradilar.
SVG — W3C standarti, to'g'ridan-to'g'ri qo'llab-quvvatlanmaydi. iOS da — PDF vektor aktivlari. Android da — Vector Drawable XML. IT Sectr iOS uchun PDF va Android uchun Vector Drawable XML ni tavsiya qiladi.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.