الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اهجروا DIRECTX وانتقلوا الى OPENGL

مغلق
بدأه Abdullah.Alshammeri في 10 مارس 2005 · 27 رد · 2,451 مشاهدة · في قسم برمجة الألعاب و الرسوميات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم:

كلنا يعلم ان لبرمجة الالعاب طريقين

directx & opengl

وطبعا كل منهما يوصل لنهاية مشابهة... لكن

الدايركت اكس ياخوان صعب ومثل ما قال اخونا HGB انه يحتاج الى قلب قوي....

فهو مكون من كائنات وثوابت طويييلة صعية احفظ او حتى التذكر ... (( وجهة نظر))

بعكس ال OPENGL فهي دوال بسيطة سهلة الحفظ والفهم بل من قراءة اسم الدالة تعرف معناها...

الا ان الكثير ((كنت منهم)) يتصور ان OPENGL هي بمنزلة VB عند ++C ...فيعتقد انها ضعيفة

ولا تقارن بـDIRECTX

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

بينهما الا انني ساضيف بضع الامور وبشكل مبسط (( للمعلومية تلك المعلومات استفدتها من الكثير من الاعضاء منهم ((HGB احمد صالح رامي لولح وهو عضو في منتدى المنابر GAMSOFT وغيرهم..))

المقارنة:

1- نعلم ان الدايركت اكس اضيف اليها مؤخرا مايسمى HLSL لذلك الكثير فضل DIRECTX بسبب تلك الميزة

لكن ايضا OPENGL تملك تقنية((او مكتبة لا اعرف ماذا تسمى )) يطلق عليها GLSL فهي مشابه لـHLSL

ان لم تكن افضل منها وساطرح موضوع عن لغات التظليل تلك....

2- االبعض يفضل الدايركت اكس بسبب انها تملك مكتبة صوت وفيديو ودعمها لالعاب الشبكات ومكتبة خاصة بالادخال والاخراج.... بعكس OPENGL .... لكن لاتنسى ان OPENGL تستطيع استخدام تلك المكتبات او استخدام مكتبات خاصة بـ OPENGL لامجال لذكرها هنا ..اذا تلك لاتعتبر ميزة حقيقية للدايركت اكس..

3- OPENGL مكتبة متنقلة تشتغل على عدة انظمة وايضا في الكونسول بعكس الدايركت اكس..

4- البلايستيشن 2 يستخدم OPENGL اما XBOX يستخدم الدايركت اكس..

5-OPENGL اكثر دروس وامثلة بعكس الدايركت اكس فامثلته قليلة بل شحيــــــحة وهو اكبر عيب...

اذا لماذا تتعب نفسك مع الدايركت اكس ...؟ لماذا لاتنتقل الى OPENGL ؟؟؟

الموضوع موجه لمن تعب وعجز ومل ويئس من الدايركت اكس.... اما اذا كنت مستوعبا للدايركت اكس فاستمر عليه.......... تلك نصيحة لا اكثر ولا اقل..

ولاتنسى انك اذا اتقنت الدايركت اكس او OPENGL فانه لايوجد اختلاف في مستوى اللعبة المبرمجة باحدى المكتبتين.......

والسلام عليكم......

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#2

أنا بعتقد أن كثير متحيزين للدايركت اكس ومش هيسكتوا على الموضوع :D

الاخ هيثم أوضح أكثر من مرة موضوع السهولة فى الopenGl وكذلك توفرها مع الدلفى والفيجوال بيزيك والأسمبلى (تصوروا حتى الاسمبلى لها أمثلة مع openGL) .. ولكن أكيد نحب نجرب مع الدايركت اكس والشاطر اللى يواصل :)

#3

الفرق الحقيقي: ديركت اكس >> مايكروسوفت،، OPENGL >> مجموعة شركات، عدة أنظمة..

#4

يبدو انك لا تتوقف عن موضوع التحيز والتعصب يا اخ anwarica ... يبدو ان لديك عصبيات قبيلة او ما شابه !!

تحياتي لك وهذه كانت مزحه

#5

(مشاركة فارغة)

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

#6

اريد ان اعقب على نقطة واحدة

و هى ارتباط الاسمبلى ب OpenGL

هذه المعلومة لا قيمة لها ( فى الافضلية بين OpenGl نده Direct3D)

بالرغم من انى لا اريد ان انقص من قدرها.

و لكن الاسمبلى 32bit صارت شبيهة الى حد بعيد بالسى لدرجة يمكنك ان تتعلمها فى

يومين (تتعلمها و لا تتقنها) و نفس الاسباب التى جعلتها تدعم OpenGl تجعلها تدعم

Direct3D لانها تدعم ال COM

اما الجذء الخاص بال COM فقد صار شبه مخفى فى Direct3D اى ان الواجهات

المعادة بواسطة الدوال يمكن التعامل معها و انت اعمى و تفرض انها مؤشر ل class

الحقيقة هذا هو الشئ الذى يعجبنى فى Direct3D . ال OOP

اما Open GL فعلى النقيض يتكون من رزمة من الدوال مثل ال API ولو ان ال API

مرتبة بشكل اجمل بكثير.

كل ما ذكرت سابقا لا يتعدى الراى الشخصى :)

#7
اقتباس
يبدو انك لا تتوقف عن موضوع التحيز والتعصب يا اخ anwarica ... يبدو ان لديك عصبيات قبيلة او ما شابه !!

تحياتي لك وهذه كانت مزحه

:) أول لما قرأتها إعتقدت أن الموضوع عن php :D

فى هذه المشاركة وقفت مع مايكروسوفت وليس ضدها :)

#8
اقتباس
و لكن الاسمبلى 32bit صارت شبيهة الى حد بعيد بالسى لدرجة يمكنك ان تتعلمها فى

يومين (تتعلمها و لا تتقنها)

اخي لدي سؤال خارج الموضوع تقريبا...

هل هذا يعني ان الاسمبلي.. فقدت مرونتها وقوتها وبالتالي لاحاجة لتعلمها... (السؤال موجه للجميع)

اقتباس
و تفرض انها مؤشر ل class

الحقيقة هذا هو الشئ الذى يعجبنى فى Direct3D . ال OOP

بالعكس...هذا اللي يرفع ضغطي :lol:

اقتباس
اما Open GL فعلى النقيض يتكون من رزمة من الدوال مثل ال API ولو ان ال API

مرتبة بشكل اجمل بكثير

وهي من اهم ميزات opengl ... سهلة التغليف,,,, سهلة الفهم,,,, وافضل من api

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#9

اخي لدي سؤال خارج الموضوع تقريبا...

هل هذا يعني ان الاسمبلي.. فقدت مرونتها وقوتها وبالتالي لاحاجة لتعلمها... (السؤال موجه للجميع)

من لا يعرف الاسيمبلي لا هو مبرمج و بالاخص ليس مهندس الكترونيات و حاسبات ..

وهي من اهم ميزات opengl ... سهلة التغليف,,,, سهلة الفهم,,,, وافضل من api

هي اصلاً API

#10

اتفق مع كلام اخي اسلام

علي فكرة انا قلت له بكتابه هذا الرد لاني كنت تعبان شوي ;)

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

#11

هاهو مثال الopengl

/index.php?showtopic=52957

فى قسم الأسمبلى :D كان الأفضل أن أضعه هنا، صح؟

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

ولا يعنى ذلك أنه لا ينفع ربط الاسمبلى مع مكتبه الدايركت اكس ولكننى لم أجد مثالا هناك (ولو موجود فسيكون صعب الحصول عليه كالمعتاد :( )

#12

مشكوور جدا يا احمد وياbigboss .....

انا اللي كنت فهمته ان api هي دوال خاص ببيئة ويندوز....ولا تطلق الا على دوال النظام... لكن الظاهر اني كنت مضيع.... :wacko:

!!! openGL== api !!!

===

anwarica

مشكور ... في موقع NEHE .. يوجد امثلة على ربط الاسمبلي مع opengl لكن ماهي الفائدة

..

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#13

I just wanna add some thing, the power of the DirectX mainly is for its helper classes, in other words, look at the DirectX from the beginner level to the advanced level, in the beginner level, if you want to use Hardware buffers you'll create them by ur hands in OpenGL using its extensions, while in DirectX it's just a line of code, and the other problem is about the Graphics cards driver, because in OpenGL every card vendor is having set of card specified functions for OpenGL, while in DirectX the functions set is fixed for all vendors,

and if you jumped to the advanced mode, you'll find a lot of extermly powerful classes like spherical harmonics helper classes and RTPatches, and PRT and so on, so it's not just about the code, and by the way, the DirectX code is too simple than the OpenGL, because it's more organized, OOP. and every group of related functions are put together in one class.

So this is why Direct3D is more powerful than OpenGL

Mohamed Meshref

Performance Engineer

SQL Server Engine Team

Microsoft Corporation

Redmond, Washington, USA

http://www.microsoft.com/sql/

Blog: http://www.mmeshref.com

#14

بالنسبة للأسمبلي .. فهذه ليست ميزة, لأن الاسمبلي تعمل كل شي :D لانه ببساطة أي برنامج تمكتبه بالسي او السي بلص بلص راح يتحول لأسمبلي, فإذا كنت تستطيع استخدام directX في السي بلص بلص فلا بد أنك تستطيع استخدامها في الأسمبلي ايضا !!!!!

#15

في موقع NEHE .. يوجد امثلة على ربط الاسمبلي مع opengl لكن ماهي الفائدة

الفائدة ان الاسيمبلي اسرع بكثير جداً من السي .. فهي اللغة الاساسية منها إلي -----> 0 1 0101010101 !! و الله لسه منتهي الان من مشروعي و مجنني ال 010101 اللمبة تضىء ثم تطفي ثم تضيء 010101 فظهر العيب من دائرة متكاملة Shift Register بتحول من Serial In / Parrallel Out " لدراع البلاي ستيشن " ...

باختصار ..

openGL جيد للمبتدئين ، هيكلي يعتمد علي الاجرائات " الدوال " ...

DirectXغير جيد للمبتدئين " به مؤشرات و برمجة واجههات Interfaces و يجب درايه بالCOM غير قليلة إذا ترد الاحتراف .

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

#16

hasan_aljudy

كلام صحيح 100%

و من قام بالبرمجة علي الدوس زمان سوف يفهم ذلك سريعاً .... قم بعملة فك تجميع لاي دالة سوف تصل إلي اصلها لغة التجميع ..!

ببساطة الان في هذا العصر قم باستخدام الكلمة asm_ و سوف تترجم كود اسيمبلي ...

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

#17

عندي سؤال بخصوص هذا الأمر،

هل تعمل directx تحت visual c++ كما تعمل opengl تحت QT ؟

System Engineer

Red Hat Certified Engineer

Red Hat Certificate Number

805010381752078

#18

الاسمبلي ليست "اسرع كثيرا جدا" من السي .. السي سريعة جدا أيضا, لكن هناك شغلات تستطيع تسريعها أكثر بالاسمبلي, لكن السي البعض يعتبرها low level language و كذلك الـ ++C

على فكرة انا hasan-rtaq من المنابر :lol:

تم تعديل هذه المشاركة بواسطة hasan_aljudy في 14 مارس 2005 في 07:31

#19

اوه

الاسيبملي هي القمة ...! في سرهة التنفيذ

قم بحساب دالة الجذر بالسى و قم بحسابها بالاسيمبلي ..!

100% الاسيمبلي اسرع

لو اشتغلتم علي الهاردوير هلاتحظوها كثير جداً في برمجة الميكروكنترول ...

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

#20

هذا قصدي من "هناك شغلات تستطيع تسريعها أكثر بالاسمبلي" لكن بشكل عام, السي سريعة جدا.

دالة الجذر التي تتحدث عنها لا أعرف ماذا تقصد بها بالظبط (اي دالة؟ ارني دالة السي و دالة الاسمبلي, و على فكرة, أنا أكره كلمة "دالة"), لكن أكيد ان كل منها تستخدم طريقة مختلفة لحساب الجذر.

#21

السلام عليكم

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

كما ان المصرفات اصبحت تعطي كود قريب جدا لما يمكن ان تكتبه مباشرة بالأسمبلي لذلك فإن استخدام الأسمبلي يعتبر جيدا فقط من أجل Optimization.

بالنسبة لل OpenGl و DirectX أعتقد ان كلاهما جيد و لا يوجد فرق كبير يعني ان الأمر متعلق بالمبرمج و ليس ب API المستخدم للحصول على النتيجة التي يريدها.

#22
اقتباس
openGL جيد للمبتدئين ، هيكلي يعتمد علي الاجرائات " الدوال " ...

DirectXغير جيد للمبتدئين " به مؤشرات و برمجة واجههات Interfaces و يجب درايه بالCOM غير قليلة إذا ترد الاحتراف

ولكن النتيجة واحدة....

اعتقد ان الاسمبلي لافائدة منه حاليا...(في برمجة الألعاب ) الا في shader langauge

ولكن ايام زمان ... كانت الأجهزة ضعيفة... حاليا...السرعة فوق 3000 ميقا ... الذاكرة تستطيع ان تجعلها اكثر من قيقا ... كروت جرافكس قوية مثل جت فورس و غيرها... الخلاصة ...

اعتقد الاسمبلي فائدتها ... اضاءة لمبة ... وتطفيء لمبة ثانية :lol:

اقتباس
لو اشتغلتم علي الهاردوير هلاتحظوها كثير جداً في برمجة الميكروكنترول ...

:wacko:

اخي برق

اقتباس
هل تعمل directx تحت visual c++ كما تعمل opengl تحت QT ؟

اكيد ... دايركت اكس تعمل على الفيجوال سي وايضا opengl

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#23

Iam not with you that Assembly is faster than C++ or C. because simply the C++ or C compiler is a compiler which generated assembly code from C++ or C code and then assemble it, and the generated code will be much faster than the code written by the programmer's hands because it'll be auto optimized and the repated code will be replaced and the immediate code will be calculated in the compile time so it'll be too optimized, the only diff. in speed may be in the attached libraries which may be freed by the programmer him-self to get more speed, but in general it's the same and it may be faster too (Iam talking from the Compiler POV which will be visible in case any one had made a compiler here before)

and by the way C++ and C is not working on the top level of a virtual machine or a framework to be slow, this is true in the case of .Net or old visula basic or MFC (Shared linking) but for static C and C++ which is optimized in code by the developer, will be the same and may be faster due to the extra optimization of the compiler it self

Mohamed Meshref

Performance Engineer

SQL Server Engine Team

Microsoft Corporation

Redmond, Washington, USA

http://www.microsoft.com/sql/

Blog: http://www.mmeshref.com

#24

اسف

تم تعديل هذه المشاركة بواسطة bigboss1988 في 14 مارس 2005 في 19:18

#25

Iam talking from the scientific point of view of making and developing of compilers, this is true in creating compiler, in the way of why re-inventing the wheel?

just create a compiler to generate assembly from C++ or C and assemble the generated code

Mohamed Meshref

Performance Engineer

SQL Server Engine Team

Microsoft Corporation

Redmond, Washington, USA

http://www.microsoft.com/sql/

Blog: http://www.mmeshref.com

هذا الموضوع مغلق.

مواضيع مشابهة