Unconfigured Ad Widget

تقليص

إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

Alpha ماهي طريقة استدعائها وتنفيذها في الدايركت ؟

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • Alpha ماهي طريقة استدعائها وتنفيذها في الدايركت ؟

    السلام عليكم ورحمة الله وبركاته

    أريد أن أعرض مستطيل ويكون هذا المستطيل شفاف أي يظهر ما وراءه ويكون على المستطيل كلام

    كيف أستطيع اني أسوي هذا الشي؟

    أريد الطريقة على الدايركت اكس 7
    أو على الدايركت اكس 8

    وأنا حاولت أسويها على الدايركت اكس 7 لكني ما قدرت فما الطريقة ؟؟

    وشكرا
    سبحان الله وبحمده عدد خلقه ورضا نفسه وزنة عرشه ومداد كلماته

  • #2
    السلام عليكم

    Alpha Blinding :

    DX7: http://216.5.163.53/DirectX4VB/Tutor...tColorKeys.asp

    DX8: http://216.5.163.53/DirectX4VB/Tutor...R_Lesson12.asp


    وهنالك أنواع عديدة من الBlind Modes غير الAlpha

    بالتوفيق

    تعليق


    • #3
      السلام عليكم

      أشكرك أخي game_maker على الرد
      ولو اني اردت أن تكتبها بالعربي وتفهمنا هي لاني مافهمتها بالانجليزي

      حسنا دعك من دايركت اكس 7
      ولندخل الى دايركت اكس 8

      أنا رايت في المثال من الموقع السابق وقد رأيت صورتين صورة الجدار والصورة الأخرى اللتي يتم بها اخراج الصورة الأولى
      ولكني لم أفهم كيف تم عمل ذلك وقد رأيت ملف .dds ما هو هذا الملف هل هو الصورة التي تظهر على الشاشة
      أم ان الصورة التي تظهر على الشاشة هي من تأثير الصورتين الأولى والثانية

      أرجو توضح لنا الطريقة من بداية تحميل الصور ثم اضافة التأثيرات عليها ثم عرضها على الشاشة
      فلا يعقل أن يكون كل ذلك الكود لفعل هذا الشي البسيط

      أرجو من كل من يعرف انه يعلمنا مشكورا
      سبحان الله وبحمده عدد خلقه ورضا نفسه وزنة عرشه ومداد كلماته

      تعليق


      • #4
        أخي game-maker انت قلت ( وهنالك أنواع عديدة من الBlind Modes غير الAlpha )

        أرجو منك تعلمنا على اللي تعرفه منها

        أرجو من كل واحد يعرف حاجة عن هذي التأثيرات يضيف اللي يعرفه ويكتب وش فايدته
        عشان الجميع يستفيد

        وأرجو انه يكون الموضوع مرجع لهذي التأثيرات

        وأشكر الجميع
        سبحان الله وبحمده عدد خلقه ورضا نفسه وزنة عرشه ومداد كلماته

        تعليق


        • #5
          السلام عليكم

          لا أعتقد ان اللغة الإنقليزية المستخدمة في الموقع معقدة

          أخي أمهلني يومين حتى أنتهي من إختباراتي وأقوم حينها بكتابة مثال مع الشرح (بالعربي)

          تحياتي

          تعليق


          • #6
            السلام عليكم

            أهلاً بالحربي :

            آسف للتأخير ^^

            حسناً خلاصة الموضوع تقع تحت هذين السطرين :

            كود:
            D3DDevice.SetRenderState D3DRS_SRCBLEND, CONST_D3DBLEND
            D3DDevice.SetRenderState D3DRS_DESTBLEND, CONST_D3DBLEND
            والأسئلة ستكون : ماهي التراكيب الممكن وضعها هنا ومالفرق بين D3DRS_SRCBLEND و D3DRS_DESTBLEND ؟

            لو فهمنا هذا لإنتهت العملية

            للنقطة الأولى إرجع إلى الجدول الموجود في الموقع
            وسأقوم بإيضاح واحدة منها ولتكن مثلاً D3DBLEND_INVSRCCOLOR
            INV : تعني Inverse أي معكوس
            فلو كان اللون 240 فسيصبح 255-240 = 15
            SRC : أي أنها تأخذه من المصدر
            Color أي اللون وأنت تعرف أننا تعامل هنا مع RGBA وعندما قلنا Color فهذا يشمل قناة ألفا أيظاً
            INV+SRV+COLOR :
            كود:
            (1-Rs, 1-Gs, 1-Bs, 1-As).
            الs ترمز إلى المصدر Source

            وجميع هذه المعلومات تكون موجودة في الصورة الأصلية بما فيها الألفا

            وصور dds تحتوي على قناة Alpha معدة مسبقاً

            لذا عندما نحدد ما تريد وضعه في الD3DRS_SRCBLEND
            ونحدد ما تريد وضعه في الD3DRS_DESTBLEND

            يقوم DX بعمل Blending بينهما ثم تضهر النتيجة كلون نهائي RGBA على كل نقطة
            ولكن كيف يقوم DirectX بمعمل Blending بين طبقة Source و Dest

            يتم ذلك عن طريق

            D3DDevice.SetRenderState D3DRS_BLENDOP, CONST_D3DBLENDOP

            كود:
            Enum CONST_D3DBLENDOP
                D3DBLENDOP_ADD         = 1
                D3DBLENDOP_SUBTRACT    = 2
                D3DBLENDOP_REVSUBTRACT = 3
                D3DBLENDOP_MIN         = 4
                D3DBLENDOP_MAX         = 5
            End Enum
            ADD : المصدر + الوجهه

            SUBTRACT : المصدر - الوجهة

            REVSUBTRACT : الوجهة - المصدر

            MIN : أقل قيمة

            MAX : أعلى قيمة

            وهي ADD بشكل إفتراضي

            بقي أمر آخر

            من أين نحصل على الألفا

            إحدى الطرق هي وضعها عند إعداد النقطة
            إستخدم الدالة
            كود:
            d3dcoloraux.D3DColorRGBA()
            وحتى يتم تفعيل هذه الطريقة (هنالك طرق أخري ويجب أن نخبره أي طريقة نعمل عليها)

            يتم ذلك - كما في التالي :

            كود:
            Call D3DDevice.SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE)
            Call D3DDevice.SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_DIFFUSE)
            Call D3DDevice.SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_CURRENT
            الموضوع طويل بعض الشيء (وسع صدرك علينا )

            هنالك أنواع عديدة لم أتحدث عنها في الموضوع

            ولكن للإختصار سأكتفي بأن أقول أنك تريد أن تعمل

            صورة مربعة ملونة حوافها سوداء وأنت تريد عمل :

            1- إزالة اللون الأسود
            2- جعل الصورة شفافة بنسبة 30% مثلاً

            أليس هذا ما تريده

            كل ما تحتاج عمله هو هو وضع الColorKey أسوداً إثناء إنشاء الإكساء

            ثم تفعيل Alpha Blending ثم تفعيل طريقة
            الVertex Based Alpha Blending

            ثم وضع الSource Blend إلى SrcAlpha
            ووضع الDestBlind إلى ONE
            وضع العملية : جمع


            بالطبع هنالك طرق أخرى ولكن أنا جربت هذه الطريقة ونجحت معي

            ولو بحثت بنفسك ستجد ماهو أسرع من هذه الطريقة لأني ببساطة مبتدأ في هذه الأمور

            حمل هذا المحرك (محركي) وستجد مثال بإسم Ex0

            تستطيع تغيير أنواع التركيبات وأنواع المزج أثناء التشغيل حتى تستطيع فهما بشكل أسرع وأوضح

            www.axdteam.com/download/axde01beta.exe

            بالتوفيق

            تعليق


            • #7
              أشكرك اخي game_maker لتوضيحك للأمور
              وجزاك الله خيري الدنيا والآخرة
              وسوف أجربها ان شاء الله

              أما بالنسبة لمحركك
              فأولا أبارك لك انهائك هذا المحرك
              وثانيا انه يأتيني خطأ أثناء محاولتي لتشغيل المشاريع
              والخطأ في هذا السطر
              Engine.Engine_Init Form1, 800, 600, FullScreen
              والخطأ هذا في جميع المشاريع
              فياليت تشوف الحل

              وأشكركك
              أخوك/ فهـــد
              سبحان الله وبحمده عدد خلقه ورضا نفسه وزنة عرشه ومداد كلماته

              تعليق

              يعمل...
              X