موبائل ایپس میں Overdraw: یہ کیا ہے، وجوہات اور بہتری

مصنف: IT Sectr اشاعت: 2026-06-12 مطالعے کا وقت: 10 منٹ

Overdraw ایک ہی پکسلز کو ایک فریم میں کئی بار ضرورت سے زیادہ دوبارہ ڈرائینا ہے۔ جب اسکرین پر بہت سے اوورلیپنگ عناصر والا پیچیدہ انٹرفیس ظاہر ہوتا ہے، تو GPU ہر پکسل کو بار بار پروسیس کرنے پر مجبور ہوتا ہے، جو براہ راست فریم ریٹ اور توانائی کی کھپت کو متاثر کرتا ہے۔ Google Android Developer Documentation، 2025 کے مطابق، overdraw کو 50% کم کرنے سے رینڈرنگ کارکردگی 30% تک بڑھ سکتی ہے۔ Overdraw کی بہتری ہموار اینیمیشن اور ریسپانسیو انٹرفیس والی ایپلیکیشنز تیار کرتے وقت ایک لازمی قدم ہے۔

اہم نکات

  • Overdraw ایک ایسا رجحان ہے جہاں ایک پکسل فریم میں ایک سے زیادہ بار راسٹرائز ہوتا ہے، جس سے GPU پر ضرورت سے زیادہ بوجھ پڑتا ہے۔
  • GPU اپنے 40% تک وقت پوشیدہ پکسلز کو دوبارہ ڈرائینے میں صرف کرتی ہے اگر منظر میں مکمل طور پر اوورلیپ شدہ عناصر موجود ہوں۔
  • Debug GPU Overdraw Android میں رنگین اشارے کے ذریعے ضرورت سے زیادہ دوبارہ ڈرائینگ والے علاقوں کو بصری طور پر دریافت کرنے کی اجازت دیتا ہے۔
  • ClipRect اور Canvas.saveLayer Android میں دستی طور پر دوبارہ ڈرائینگ کے علاقے کو محدود کرنے کے اہم اوزار ہیں۔
  • ViewStub اور اجزاء کی سست لوڈنگ پوشیدہ انٹرفیس عناصر کی تاخیر سے ابتدا کے ذریعے overdraw کو کم کرتی ہے۔

موبائل گرافکس میں Overdraw کیا ہے؟

Overdraw ایک ایسی صورت حال ہے جہاں ایک ہی اسکرین پکسل کو ایک رینڈر فریم کے اندر کئی بار دوبارہ ڈرائیا جاتا ہے۔ ایک مثالی منظر نامے میں، ہر پکسل کو صرف ایک بار لکھا جانا چاہیے، لیکن حقیقی انٹرفیس میں nested Views، پس منظر کی تصاویر اور شفاف تہوں کی وجہ سے، GPU بار بار لکھتا ہے۔

ہر اضافی دوبارہ ڈرائینگ فریم رینڈر وقت کو بڑھاتی ہے۔ معیاری 60 FPS شرح پر، ہر فریم کو تقریباً 16.6 ms ملتا ہے۔ اگر overdraw اس حد سے تجاوز کرنے کا سبب بنتا ہے، تو فریم کی شرح 30 FPS یا اس سے کم ہو جاتی ہے، جو انٹرفیس کی ہمواری کو نمایاں طور پر کم کر دیتی ہے۔

Google کی Android Performance Patterns کے مطابق، 3x overdraw فیکٹر والی ایپ، 1x overdraw والی ایپ کے مقابلے میں فریگمنٹ شیڈر پر تین گنا زیادہ وقت صرف کرتی ہے۔ کم کارکردگی والے GPU آلات پر، یہ اسکرولنگ اور اینیمیشن کے دوران نمایاں وقفے کا سبب بنتا ہے۔

موبائل ڈویلپرز کے لیے، overdraw کو سمجھنا انتہائی اہم ہے: یہ عنصر اکثر بظاہر سادہ اسکرینوں پر بڑی تعداد میں nested عناصر کے ساتھ جھٹکے والی اسکرولنگ اور کم فریم ریٹ کا سبب بنتا ہے۔

Overdraw GPU کارکردگی کو کیسے متاثر کرتا ہے

GPU پائپ لائن کئی مراحل پر مشتمل ہے: ورٹیکس شیڈر، راسٹرائزیشن اور فریگمنٹ شیڈر۔ فریگمنٹ شیڈر سب سے مہنگا حصہ ہے کیونکہ یہ ہر پریمیٹو کے ہر پکسل کے لیے چلتا ہے۔ 2x overdraw پر، فریگمنٹ شیڈر دوگنا پکسلز پروسیس کرتا ہے، جو براہ راست فریم وقت بڑھاتا ہے۔

جدید موبائل GPUs جیسے Qualcomm Adreno اور Apple GPU میں Early-Z Test اور Hidden Surface Removal میکانزم ہیں جو جزوی طور پر overdraw کی تلافی کرتے ہیں۔ تاہم، یہ بہتری صرف مخصوص شرائط میں کام کرتی ہے، اور صرف ہارڈویئر ایکسلریشن پر انحصار نہیں کرنا چاہیے۔

مثال کے طور پر، نیم شفاف عناصر کو رینڈر کرتے وقت، ہارڈویئر Early-Z غیر مؤثر ہے، اور ہر پکسل مکمل طور پر پروسیس ہوتا ہے — ایسے منظرناموں میں overdraw 5x یا اس سے زیادہ تک پہنچ سکتا ہے۔

ضرورت سے زیادہ دوبارہ ڈرائینگ کی اہم وجوہات

کثیر پرتوں والے پس منظر موبائل ایپس میں overdraw کی اہم وجوہات میں سے ایک ہیں۔ جب کوئی Activity یا ViewController پس منظر کا رنگ سیٹ کرتا ہے، تو ہر nested View اپنا پس منظر شامل کر سکتی ہے، اور پکسل ہر درجہ بندی کی سطح پر دوبارہ ڈرائیا جاتا ہے۔

Uber Engineering کے ایک مطالعے سے پتہ چلا کہ ان کی Android ایپ میں ضرورت سے زیادہ پس منظر ہٹانے سے overdraw 32% اور اسکرین رینڈرنگ کا وقت 25% کم ہوا۔ iOS میں بھی ایسی ہی صورت حال ہے: غیر شفاف Views کے لیے opaque = true سیٹ کرنا الفا بیلنڈنگ کو ختم کرتا ہے اور ایک سے زیادہ پکسل لکھنے سے روکتا ہے۔

  • شفاف اوورلے — دوسرے عناصر کے اوپر الفا چینل والے عناصر ہمیشہ overdraw کا سبب بنتے ہیں۔
  • ClipChildren=false — چائلڈ عناصر کی کلپنگ غیر فعال کرنا پوشیدہ علاقوں کے رینڈرنگ کا سبب بنتا ہے۔
  • ShapeDrawable کا استعمال سادہ رنگوں کے بجائے فریگمنٹ شیڈر پر بوجھ بڑھاتا ہے۔
  • ضرورت سے زیادہ nesting — View کے درجہ بندی کی ہر سطح ایک ممکنہ دوبارہ ڈرائینگ پرت شامل کرتی ہے۔

iOS پلیٹ فارم پر، overdraw اکثر شفاف UIStackView، shouldRasterize کے ساتھ CALayer اور اوورلیپنگ UIBlurEffect کے استعمال کی وجہ سے ہوتا ہے۔ Apple XCode میں Core Animation ٹول کے ذریعے overdraw چیک کرنے کی سفارش کرتا ہے — یہ دوبارہ ڈرائینگ زونز کو سرخ اوورلے کے طور پر دکھاتا ہے۔

Overdraw کی تشخیص کیسے کریں: اوزار اور طریقے

Debug GPU Overdraw ایک بلٹ ان Android ٹول ہے جو overdraw فیکٹر کے لحاظ سے اسکرین کو مختلف رنگوں میں رنگتا ہے۔ جامنی کا مطلب 1x، نیلا — 2x، سبز — 3x، گلابی — 4x، سرخ — 5x یا اس سے زیادہ ہے۔ ایک مثالی اسکرین زیادہ تر جامنی ہونی چاہیے۔

iOS میں، اسی طرح کی تشخیص XCode Instruments میں Core Animation ٹول کے ذریعے کی جاتی ہے۔ یہ دوبارہ ڈرائینگ زونز کو تصور کرتا ہے اور Color Blended Layers موڈ میں پکسل لکھنے کی صحیح تعداد دکھاتا ہے۔ سبز تہیں غیر شفاف (بہترین) ہیں، سرخ تہوں میں شفافیت ہوتی ہے اور overdraw کا سبب بنتی ہیں۔

  • Profile GPU Rendering Android میں رینڈرنگ وقت کا ہسٹوگرام دکھاتا ہے۔ لمبے سبز کالم overdraw کے مسائل کی نشاندہی کرتے ہیں۔
  • Renderscript Android 10+ آلات پر رینڈرنگ پائپ لائن کے تجزیہ کے لیے ایک زیادہ جدید ٹول ہے۔
  • Metal Debugger XCode میں ہر رینڈر پاس کا تجزیہ کرنے اور فریگمنٹ شیڈر کالز کی صحیح تعداد دیکھنے کی اجازت دیتا ہے۔

تشخیص کے بعد، بہتری سے پہلے اور بعد میں FPS کی پیمائش کرنا ضروری ہے۔ overdraw کو ٹھیک کرتے وقت 10–15 FPS کا فرق فہرستوں اور اینیمیشن والی پیچیدہ اسکرین کے لیے ایک عام نتیجہ ہے۔

موبائل ایپس میں Overdraw بہتری کی تکنیکیں

ضرورت سے زیادہ پس منظر ہٹانا سب سے آسان اور مؤثر طریقہ ہے۔ Android میں، ہر View کے لیے نہیں، بلکہ صرف Activity یا تھیم کے لیے android:windowBackground سیٹ کریں۔ iOS میں، تمام غیر شفاف UIView کے لیے opaque = true ان عناصر کے لیے overdraw کو تقریباً صفر کر دیتا ہے۔

Google I/O 2019 کے مطابق، Google Maps میں overdraw کی بہتری نے پرتوں کے انضمام اور ڈرائینگ ایریا کو محدود کرنے کے لیے ClipRect کے استعمال کے ذریعے فریم رینڈرنگ کا وقت 40% کم کیا۔ Android ڈویلپرز کے لیے، Google درج ذیل طریقوں کی سفارش کرتا ہے:

  • ClipRect — Canvas ڈرائینگ ایریا کو محدود کرتا ہے۔ اگر نظر آنے والے علاقے سے باہر کچھ نہیں ہے، تو GPU وسائل ضائع نہیں کرتا۔
  • ViewStub — شاذ و نادر ہی استعمال ہونے والے یا ابتدائی لوڈ پر پوشیدہ عناصر کے لیے۔ جزو صرف اس وقت رینڈر ہوتا ہے جب inflate کو کال کیا جائے۔
  • merge اور include — View کے درجہ بندی کی گہرائی کو کم کرتے ہیں، جس سے رینڈر پاس کی تعداد کم ہوتی ہے۔
  • فلیٹ بفر — nested Layouts کو ایک ConstraintLayout یا RelativeLayout سے تبدیل کرنا۔

iOS میں، بہتری CALayer کنفیگریشن کے ذریعے حاصل کی جاتی ہے: masksToBounds = true سیٹ کرنا پرت کی حدود سے باہر کے مواد کو کراپ کرتا ہے، اور shouldRasterize جامد تہوں کے لیے بٹ میپ کیشنگ کو فعال کرتا ہے۔

کوڈ کی مثالیں: Android اور iOS میں Overdraw کا خاتمہ

آئیے Kotlin اور Swift میں عملی مثالیں دیکھتے ہیں جو overdraw ختم کرنے کے عام منظرناموں کو ظاہر کرتی ہیں۔ پہلی مثال Android میں ClipRect کے ذریعے بہتری دکھاتی ہے:

kotlin
class OptimizedView@JvmOverloads constructor(
    context: Context, attrs: AttributeSet? = null
) : View(context, attrs) {

    override fun onDraw(canvas: Canvas) {
        canvas.clipRect(
            paddingLeft.toFloat(), paddingTop.toFloat(),
            width - paddingRight.toFloat(), height - paddingBottom.toFloat()
        )
        // Draw content only within clipped area
        super.onDraw(canvas)
    }
}

Swift میں دوسری مثال دکھاتی ہے کہ اگر عنصر نیم شفاف نہیں ہونا چاہیے تو پرت کے لیے شفافیت کو کیسے غیر فعال کریں:

swift
class OpaqueLabel: UILabel {
    override var isOpaque: Bool {
        get { true }
        set { }
    }

    override func draw(_ rect: CGRect) {
        backgroundColor?.setFill()
        UIRectFill(rect)
        super.draw(rect)
    }
}

تیسری مثال Android میں تاخیر سے میپ لوڈ کرنے کے لیے ViewStub کے استعمال کو ظاہر کرتی ہے۔ ViewStub اس وقت تک رینڈر نہیں ہوتا جب تک یہ نظر نہ آئے، جو اسکرین کی ابتدا کے مرحلے میں overdraw کو ختم کرتا ہے:

xml
<!-- layout/activity_main.xml -->
<ViewStub
    android:id="@+id/map_stub"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:inflatedId="@+id/map_container"
    android:layout="@layout/map_fragment" />

// Inflate on demand
ViewStub stub = findViewById(R.id.map_stub)
stub?.inflate()

اکثر پوچھے گئے سوالات

سادہ الفاظ میں Overdraw کیا ہے؟

Overdraw اس وقت ہوتا ہے جب اسکرین پر ایک پکسل ایک فریم میں کئی بار دوبارہ ڈرائیا جائے۔ تصور کریں کہ آپ کاغذ کی ایک شیٹ پینٹ کر رہے ہیں، اور اس کے اوپر ڈرائنگ والی کئی شفاف فلمیں چپکا رہے ہیں — نیچے کی تہوں کو ہر بار جب اوپر کی تہہ بدلتی ہے دوبارہ ڈرائینا پڑتا ہے۔

Android پر Overdraw کیسے چیک کریں؟

ڈویلپر سیٹنگز میں Debug GPU Overdraw کو فعال کریں۔ 1x overdraw والے عناصر جامنی، 2x — نیلے، 3x — سبز، 4x — گلابی، 5x+ — سرخ رنگ کے ہوتے ہیں۔ ایک بہترین اسکرین سرخ علاقوں کے بغیر زیادہ تر جامنی ہوتی ہے۔

Overdraw موبائل ایپس میں FPS کیوں کم کرتا ہے؟

ہر اضافی پکسل دوبارہ ڈرائینگ کے لیے فریگمنٹ شیڈر کو کال کرنے کی ضرورت ہوتی ہے، جو رنگ، ساخت اور روشنی کو پروسیس کرتا ہے۔ 60 FPS پر، ہر فریم کو 16.6 ms ملتا ہے — اگر overdraw GPU کو 2–3 گنا زیادہ پکسلز پروسیس کرنے پر مجبور کرتا ہے، تو حد پار ہو جاتی ہے اور FPS 30 تک گر جاتا ہے۔

کیا Overdraw بیٹری کی زندگی کو متاثر کرتا ہے؟

ہاں، براہ راست۔ ضرورت سے زیادہ کام کرنے والا GPU زیادہ توانائی خرچ کرتا ہے۔ Google کی تحقیق کے مطابق، overdraw کو 4x سے 1x تک کم کرنے سے GPU کی بجلی کی کھپت 35–50% کم ہو جاتی ہے، جو خاص طور پر ہائی ریزولوشن ڈسپلے پر نمایاں ہے۔

Overdraw کی کون سی سطح نارمل سمجھی جاتی ہے؟

سادہ اسکرینوں کے لیے — 1x–1.5x (تھوڑی مقدار میں نیلے کے ساتھ جامنی)۔ پیچیدہ انٹرفیس کے لیے — 2x تک۔ 3x اور اس سے اوپر (گلابی، سرخ) کی سطحوں پر بہتری کی ضرورت ہے۔ Google اسکرین بھر میں اوسطاً 2.5x overdraw سے تجاوز نہ کرنے کی سفارش کرتا ہے۔

خلاصہ

  • Overdraw ضرورت سے زیادہ پکسل دوبارہ ڈرائینگ ہے، موبائل انٹرفیس میں کم GPU کارکردگی کی اہم وجہ۔
  • اہم وجوہات: کثیر پرتوں والے پس منظر، شفاف اوورلے، ضرورت سے زیادہ View nesting اور opaque فلیگ کی کمی۔
  • تشخیص Android میں Debug GPU Overdraw اور XCode میں Core Animation ٹول کے ذریعے کی جاتی ہے۔
  • بہتری میں ضرورت سے زیادہ پس منظر ہٹانا، ClipRect، ViewStub اور opaque = true کا استعمال شامل ہے۔
  • Overdraw کو 3x سے 1x تک کم کرنے سے FPS 30–50% بڑھ سکتا ہے اور GPU بجلی کی کھپت کم ہو سکتی ہے۔
  • Android میں، nested LinearLayout کے بجائے فلیٹ درجہ بندی کے لیے ConstraintLayout استعمال کرنے کی سفارش کی جاتی ہے۔
  • ترقی کے ہر مرحلے پر overdraw کو کنٹرول کریں — ریلیز سے پہلے پوسٹ فیکٹم بہتری سے یہ آسان ہے۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں