Mobil İnkişafda Qrafika və Renderinq: Bu Nədir, Proses Necə İşləyir və Necə Fəaliyyət Göstərir

Müəllif: IT Sectr Dərc olunub: 2026-06-16 Oxuma vaxtı: 8 dəq
Qrafika və renderinq mobil tətbiqlərin performansının əsas aspektləridir. Apple OpenGL ES Guide-a görə, vizual səhvlərin 90%-dən çoxu səhv renderinq nəticəsində yaranır. Qrafik boru kəmərini başa düşmək animasiya və mürəkkəb interfeyslərlə işləyən hər bir tərtibatçı üçün vacibdir.

Əsas Məqamlar

  • CPU Rendering — mərkəzi prosessorda çəkmə. Yavaş, lakin çevik. Canvas, Core Graphics (Quartz 2D). GPU Rendering — qrafik prosessorda paralel emal. Metal, OpenGL ES, Vulkan.
  • Shader — GPU-da işləyən proqram. Vertex Shader təpələri emal edir, Fragment Shader pikselləri emal edir. Müasir renderinq şeyderlərdən istifadə edir.
  • Overdraw — pikselin dəfələrlə təkrar çəkilməsi. Performansın əsas düşməni. Alətlər: Debug GPU Overdraw, Color Blended Layers.
  • CALayer (iOS) — Core Animation-ın əsas elementi. CAShapeLayer — GPU sürətləndirməli vektor qrafika. Vector Drawable — Android formatı.
  • Offscreen Rendering — göstərmədən əvvəl buferə renderinq. Kölgələr, dairəvi künclər və maskalar üçün lazımdır. Performansı azaldır — çəkinin.

Qrafika və Renderinq: CPU və GPU Əsasları

Renderinq — məlumatların (təpələr, teksturlar, şeyderlər) ekranda təsvirə çevrilməsi prosesidir. Mobil cihazlarda renderinq CPU (mərkəzi prosessor) və ya GPU (qrafik prosessor) üzərində icra oluna bilər. Seçim qrafika növündən və tələb olunan performansdan asılıdır.

CPU vs GPU Rendering

CPU Rendering — ardıcıl emal. Hər bir təlimat bir-birinin ardınca icra olunur. CPU məntiq və budaqlanma üçün optimallaşdırılıb. Canvas (Android), Core Graphics (iOS) CPU-da işləyir. Üstünlük: dəqiqlik, mürəkkəb alqoritmlərə dəstək. Çatışmazlıq: çox sayda qrafik element olduqda yavaş. GPU Rendering — paralel emal. Minlərlə GPU nüvəsi eyni anda təpələri və pikselləri emal edir. Metal (iOS), Vulkan (Android), OpenGL ES (hər iki platforma) GPU-dan istifadə edir. GPU Rendering 3D, 60 FPS animasiyalar və mürəkkəb effektlər üçün məcburidir. Müasir UI çərçivələri (SwiftUI, Jetpack Compose, Flutter) defolt olaraq GPU-dan istifadə edir.

Şeyderlər (Vertex, Fragment)

Şeyderlər GPU-da icra olunan proqramlardır. Onlar ekranda hər bir obyektin necə göründüyünü müəyyən edir. Qrafik boru kəməri bir neçə mərhələdən ibarətdir, lakin iki əsas şeyder — Vertex Shader və Fragment Shader — 99% hallarda istifadə olunur. Şeyderlər GLSL (OpenGL), MSL (Metal) və ya HLSL (DirectX) dilində yazılır.

Vertex Shader — 3D modelin təpələrini emal edir. Giriş: təpə mövqeyi, normal, UV koordinatları. Çıxış: çevrilmiş mövqe (model → görünüş → proyeksiya). Vertex Shader təpələr yarada və ya silə bilməz — yalnız çevirə bilər. Fragment Shader — rastrlaşdırılmış üçbucaqda hər bir pikselin (fraqmentin) rəngini hesablayır. Giriş: Vertex Shader-dən interpolyasiya olunmuş məlumatlar (UV, normallar). Çıxış: RGBA rəngi. Fragment Shader teksturlama, işıqlandırma (Phong, PBR) və post-effektlərə cavabdehdir. Müasir mühərriklər (Unity, Unreal) şeyderləri avtomatik generasiya edir, lakin optimallaşdırma üçün boru kəmərini başa düşmək lazımdır.

Offscreen Rendering — ekrana deyil, müvəqqəti buferə renderinq. İstifadə olunur: 1) effektlər (blur, shadow), 2) tekstura daxilinə render, 3) kadrların öncədən hesablanması. Offscreen Rendering bahalıdır: kontekst dəyişmə və əlavə renderinq keçidi. iOS kölgələr və cornerRadius üçün avtomatik olaraq Offscreen Rendering-i aktivləşdirir. Rastrlaşdırma — vektor məlumatlarının (təpələr + şeyderlər) piksellərə çevrilməsi. Rastrlaşdırıcı hansı fraqmentlərin üçbucağa aid olduğunu müəyyən edir və Fragment Shader-i çağırır. Kompoziting — təbəqələrin son təsvirdə yığılması. Core Animation CALayer-ları kompozit edir, Android SurfaceFlinger təbəqələrini kompozit edir.

Parametr CPU Rendering GPU Rendering
ArxitekturaArdıcıl (az nüvə)Paralel (yüzlərlə-minlərlə nüvə)
SürətQrafika üçün yavaşKütləvi əməliyyatlar üçün sürətli
AlətlərCanvas, Core Graphics (Quartz 2D)Metal, OpenGL ES, Vulkan
TətbiqSadə 2D qrafika, mətn, UI3D, animasiyalar, oyunlar, mürəkkəb effektlər
İstehlakAz enerjiÇox enerji, lakin daha sürətli
OverdrawYüksək xərcAşağı xərc (lakin yenə də zərərli)

CPU — məntiq və Canvas üçün. GPU — qrafika və animasiyalar üçün. IT Sectr hərəkət edən məzmun (animasiyalar, keçidlər, sürüşdürmə) üçün GPU renderinqindən istifadə etməyi tövsiyə edir — bu sabit 60 FPS təmin edir.

Core Animation (CALayer, CAShapeLayer)

Core Animation — Apple-ın GPU sürətləndirməli animasiya renderinq çərçivəsi. Əsas element CALayer-dır: məzmun (şəkil, rəng, mətn) olan düzbucaqlı sahə. CALayer idarə edir: mövqe, ölçü, fon rəngi, haşiyə, kölgə, cornerRadius və çevrilmələr (2D və 3D). Core Animation avtomatik olaraq GPU-da təbəqələri kompozit edir — tərtibatçının qrafik kod yazmasına ehtiyac yoxdur.

CALayer

CALayer — məzmun bitmapı saxlayan yüngül obyekt (görünüş deyil). UIButton, UILabel, UIImageView — hamısı daxildə CALayer istifadə edir. Xüsusiyyətlər: frame, bounds, position, anchorPoint, transform, opacity, masksToBounds. CALayer xüsusiyyətlərinin animasiyası GPU-da baş verir — bu Core Animation-ın əsas üstünlüyüdür. CALayer.shouldRasterize — mürəkkəb qrafikanı keşləmək üçün təbəqənin rastrlaşdırılmasını aktivləşdirir. CAShapeLayer — vektor qrafika üçün alt sinif: GPU-da yol çəkir. Proqres çubuqları, qrafiklər, maskalar və forma animasiyası üçün istifadə olunur. CAShapeLayer.path — animasiya oluna bilən xüsusiyyət (forma morfing animasiyası).

Kompoziting Core Animation-da — CALayer-ların son kadrda yığılması prosesi. Hər CALayer GPU-da ayrıca teksturdur. Kompoziting Render Server-də (ayrıca proses) baş verir. Kompoziting tələb edən xüsusiyyətlər: opacity, shadow, cornerRadius + masksToBounds, shouldRasterize. Nə qədər az təbəqə — bir o qədər sürətli kompoziting.

Optimallaşdırma (Overdraw, Offscreen Rendering)

Overdraw — eyni pikselin bir kadrda dəfələrlə rənglənməsi vəziyyəti. Nümunə: qırmızı fon → mavi düzbucaqlı → mətn. Mərkəzi piksel 3 dəfə çəkilir. Overdraw, xüsusilə köhnə cihazlarda UI ləngiməsinin əsas səbəbidir. iOS: Debug Color Blended Layers (Xcode) — qırmızı sahələr = qarışıq (overdraw). Android: Debug GPU Overdraw (Tərtibatçı Seçimləri) — mavi (1x) qırmızıya (3x+) qədər rənglər.

Overdraw

Overdraw-u necə azaltmaq olar: 1) qeyri-şəffaf görünüşlər üçün opaque = true istifadə edin (iOS). 2) Android — android:windowBackground-dan yalnız bir dəfə istifadə edin. 3) Görünməyən təbəqələri çıxarın. 4) Təbəqəli arxitektura istifadə edin: fon (1 keçid) → məzmun (2 keçid). 5) Lazımsız clipChildren və clipToPadding-dən çəkinin. Offscreen Rendering — ekrandan əvvəl buferə renderinq. Tetikleyicilər: shadow (CALayer.shadow*), cornerRadius + masksToBounds, group opacity, shouldRasterize. Xcode: Debug Offscreen Renderer — sarı sahələr = offscreen. Android-də: profile GPU rendering — çubuq uzunluğunu yoxlayın.

Vektor Qrafika (SVG, Vector Drawable)

Vektor Qrafika — riyazi düsturlarla (yollar, əyrilər, dolgular) təsvir olunan şəkillər. Vektorlar miqyaslandıqda keyfiyyət itirmir — mobil tətbiqlərdə ikonlar və illüstrasiyalar üçün idealdır.

SVG (Scalable Vector Graphics) — W3C standartı. Mobil əməliyyat sistemlərində birbaşa dəstəklənmir. Çevrilir: iOS-da — PDF vektor aktivlərinə (Xcode 12+), Android-də — Vector Drawable XML-ə. Vector Drawable — Android formatı. XML-də təyin olunur: <vector> ilə <path><group>. AnimatedVectorDrawable vasitəsilə animasiyanı dəstəkləyir. PDF Vector Assets (iOS) — Assets.xcassets-də vektor PDF-lər. Xcode onları GPU-optimallaşdırılmış teksturlara çevirir. SVG və Vector Drawable mürəkkəb effektləri (blur, gradient mesh) dəstəkləmir. Fotoşəkillər və gradientlər üçün raster PNG/WebP istifadə edin.

Tez-tez Verilən Suallar

CPU və GPU renderinqi arasındakı fərq nədir?

CPU renderinqi — mərkəzi prosessorda ardıcıl çəkmə. Sadə 2D qrafika və Canvas üçün uyğundur. GPU renderinqi təpələrin və piksellərin kütləvi emalı üçün qrafik prosessorun paralel arxitekturasından istifadə edir.

Overdraw nədir və ondan necə qaçınmaq olar?

Overdraw — kadr başına pikselin dəfələrlə çəkilməsi. Alətlər: Debug GPU Overdraw (Android), Color Blended Layers (iOS). Normal: mavi (1x) və yaşıl (2x). Qırmızı (3x+) — problem.

iOS-da CALayer və CAShapeLayer nədir?

CALayer — Core Animation-ın əsas sinfi. CAShapeLayer — GPU-da vektor qrafika üçün alt sinif. Hər ikisi Core Animation tərəfindən idarə olunur və Render Server-də kompozit olunur.

Vertex Shader və Fragment Shader nədir?

Vertex Shader — təpələri emal etmək üçün GPU proqramı. Fragment Shader — piksel rənglərini hesablamaq üçün GPU proqramı. Birlikdə qrafik boru kəmərini tətbiq edirlər.

Nə vaxt SVG, nə vaxt Vector Drawable istifadə etməli?

SVG — W3C standartı, birbaşa dəstəklənmir. iOS-da — PDF vektor aktivləri. Android-də — Vector Drawable XML. IT Sectr iOS üçün PDF, Android üçün Vector Drawable XML tövsiyə edir.

Xülasə

  • CPU vs GPU: CPU — ardıcıl, məntiq üçün. GPU — paralel, qrafika üçün. Animasiyalar üçün GPU istifadə edin.
  • Shader: Vertex — təpə çevrilməsi, Fragment — piksel rəngi. Qrafik boru kəmərinin əsasları.
  • Overdraw — FPS-in əsas düşməni. Debug GPU Overdraw / Color Blended Layers ilə yoxlayın.
  • CALayer (iOS) — GPU sürətləndirməli renderinq. CAShapeLayer — vektor formalar üçün.
  • Offscreen Rendering — bahalı. Lazımsız kölgələrdən, cornerRadius + masksToBounds-dən çəkinin.
  • Vector Drawable (Android) və PDF (iOS) — ikonlar üçün ən yaxşı format. Fotoşəkillər üçün raster PNG/WebP.
  • Kompoziting — təbəqə yığılması. Az təbəqə = sürətli kompoziting = yüksək FPS.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et