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

مشكلة ظهور المكعب خطوطه غير منتظمه عند التدوير

بدأه sookkaa في 21 سبتمبر 2010 · 26 رد · 3,323 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته عندى مشكله لما ارسم مكعب بيترسم عادى بس المشكله لما اعمله تدوير على اى محور X OR Y OR Z

حواف المكعب تكون غير منتظمه

ارجو تحميل الصوره من المرفقات و النظر ايها سوف تجدون ان حواف المكعب غير منتظمه

انا مرفق صوره للتوضيح ياريت اللى عنده حل فى المشكله دى يساعدنى

post-147554-006496200 1285064909_thumb.j

المرفقات
Cube.jpg
#2

السلام عليكم

هذا طبيعي و حسب عدد البكسلات المعالجة و دعم التظليل . عموما الحل يكمل في البطاقات الحديثة و قد تكون أنت في حالتك تستفيذ من المعالجة الإفتراضية و ليست مستقلة أي في كبطاقة nvdia أو ati.

أيظا بإمكانك الإستفادة من وسيلة تدعى rasterization , و عذرا ليس لدي الوقت للحديث عنها لأغراض شخصية.

1

تخيل, هل سيكون مستقبل الأوبن جي أل مع البشرية هكذا

future.jpg
#3

انا كارت الشاشه عندى XFX GForce 8400 تقريبا المشكله مش من كارت الشاشه

تقريبا كده فى مشكله تانيه فى OpenGL ياريت اللى عنده حل يقولى

#4

كما قال الأخ 3d max ، إما أن تقوم بإعداد كرت الشاشة ليقوم " بتنعيم " الحواف ، ستجد عدة خيارات مثل : x2 حتى تصل إلى x16 .. حسب قدرات كرت الشاشة لديك ،

أو أن تقوم بهذا برمجياً من خلال استغلال الامتداد GL_MULTISAMPLE_ARB ، قم بتفعليه باستخدام glEnable .

ولكن قبل هذا ، أنت بحاجة لبعض العمليات عند تهيئة OpenGL ، و يختلف الأمر من إطار عمل لآخر ، ولا أعرف ماهو إطار العمل الذي تستخدم ( Tao أو OpenTK ) ، لكن ابحث عن مصطلح Multisample في الوثائق .

مثلاً ، لو كنت تعمل على Tao ، فإنها تقوم بتغليف المكتبة GLFW ، وبالتالي المكتبة GLFW تدعم Multisample عن طريق الدالة glfwOpenWindow ، يعني تكتب شيء كهذا ..

GLFW.glfwOpenWindow (GLFW_FSAA_SAMPLES,4);//4x multisample
.
.
.
glEnable(GL_MULTISAMPLE_ARB);

وتستطيع أن تغير الرقم 4 بعد قيم أخرى مناسبة ، ولكن يجب أن تتأكد أن كرت الشاشة يدعم تلك القيمة ، ويدعم أصلاً خاصية multisampling ، ( عن طريق التأكد من أن الامتداد مدعوم ) ،

وأغلب الألعاب ، تتيح للمستخدم اختيار sample الذي يريد ( من x2 حتى آخر قيمة مناسبة مثل x16 ) ، ولا تفرض عليه الأمر فرضاً ،

==

إضافة :

بعد البحث في المواصفات الآن :

قد يكون الثابت لديك باسم GL_MULTISAMPLE وليس GL_MULTISAMPLE_ARB ، بحكم أنه أصبح ضمن المواصفات حسب ما قرأت للتو ..

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#5

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

او حتى تقولولى على طريقع اغير بيها اعدادات كارت الشاشه علشان اخليها 4X,16X

#6

الكود يعتمد على اطار العمل الذي تستخدم ،

ماذا تستخدم ؟ Tao أو OpenTL أو ماذا ؟ أو GLFW أو SDL .. الخ ، هل هناك Code ..

لأن عملية إنشاء OpenGL Context مختلفة حسب كل نظام تشغيل .. وبالتالي تختلف حسب كل إطار عمل ..

بكل الأحوال وباختصار :

1- تكتشف هل multisampling مدعوم أو لا .. وإذا كان مدعوم ، فلأي درجة x2 .. x4 .. الخ .

2- تفعّل multisampling عن طريق glEnable كما في الرد السابق .

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#7

انا شغال بالفيجوال بيسك مع الاوبن جى ال ومش عارف برضه اعمل ايه

الكود مش شغال مش عارف ليه ياريت حد يجرب ويقولى على النتيجه او حتى حد يعمل برنامج صغير (برنامج تنفيذى) اشغله قبل ما اشغل البرنامج ومنه اقدر اتحكم فى الفيجا (2X,4X,16X)

#8

أعلم أنك تستخدم VB لكم ماهو إطار العمل الذي تستخدم ، المكتبة يعني .. Tao مثلاً ؟ ضع جزء من الكود الذي يهيء عمل OpenGL على الأقل .. حتى نفهم بأي مكتبة .. الأمور سهلة ، لكن كل مكتبة لها طريقتها !

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#9

معلش يا جماعه انا تعبتكم معايا اوى بس والله الموضوع مهم عندى اوى

Tao دى المكتبه اللى انا شغال بيها بس طبعا ماكنتش اعرف ياريت تقولى ايه هيا المكتبه دى وايه الفرق بينها وبين المكتبات الاخرى التى تعمل على الفيجوال بيسك

ولكن المهم موضوع تسوية حواف المكعب او اى شئ مرسوم اخر

وياريت كمان حضرتك تكتبلى كود التغليف بالصور (Texture) على نفس هذه المكتبه علشان انا دورت كتير ومش لاقيلها حل

وجزاكم الله كل خير

تم تعديل هذه المشاركة بواسطة sookkaa في 22 سبتمبر 2010 في 03:02

#10

أخي : سؤالك عن الإكساء هذا سؤال آخر لا علاقة له بالموضوع ، ضعه في موضوع منفصل ، ( لا تنسى استخدام الوسم code ليظهر الكود بشكل مرتب ؟ ) .

بالنسبة لسؤالك الأصلي .. يجب أن نعرف هل تستخدم SDL مع Tao أو تستخدم GLFW مع Tao أو ماذا بالظبط ، ضع الكود .

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#11

بص انا رفعت نسخه من البرنامج اللى انا شغال عليه تبص عليه كله احسن

Test1.rar

تم تعديل هذه المشاركة بواسطة sookkaa في 23 سبتمبر 2010 في 01:45

#12

أنت تستخدم Win32 APIs بشكل مباشر .. هذا مثال قد يعمل معك ( حولته من ++C إلى VB ) ، ولا أعرف إن كان سيعمل أم لا .. قد يحتاج لتعديلات اضافية :

اذهب إلى OpenGL.vb .. واستبدل هذا السطر ( يعني احذفه ) :

PixelFormat = Gdi.ChoosePixelFormat(ghDC, pfd)

و ألصق هذه الأسطر بدلاً من السطر السابق :

        Dim numFormats As Integer
        Dim fAttributes() As Single = {0, 0}
        Dim iAttributes() As Integer = {WGL.WGL_DRAW_TO_WINDOW_ARB, GL.GL_TRUE, WGL.WGL_SUPPORT_OPENGL_ARB, GL.GL_TRUE, WGL.WGL_ACCELERATION_ARB, WGL.WGL_FULL_ACCELERATION_ARB, WGL.WGL_COLOR_BITS_ARB, 24, WGL.WGL_ALPHA_BITS_ARB, 8, WGL.WGL_DEPTH_BITS_ARB, 16, WGL.WGL_STENCIL_BITS_ARB, 0, WGL.WGL_DOUBLE_BUFFER_ARB, GL.GL_TRUE, WGL.WGL_SAMPLE_BUFFERS_ARB, GL.GL_TRUE, WGL.WGL_SAMPLES_ARB, 4, 0, 0}

        PixelFormat = Wgl.wglChoosePixelFormatARB(hDC, iAttributes, fAttributes, 1, pfd, numFormats)

هل تلاحظ الرقم 4 في الأعلى ؟

تستطيع تغييره لقيمة أخرى مناسبة مثل 1 أو 2 .. الخ .

ملاحظة :

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

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#13

للاسف الكود مش شغال معايا بيطلعلى ايرور ودخلت على الموقع اللى حضرتك كاتبتو وملاقتش حاجه

لو ينفع اعملى ملف تنفيذى (EXE) اشغله قبل ما اشغل البرنامج بتاعى

لو معلش هاتعبك معايا شويه بس والله الموضوع مهم جدا تجبلى حضرتك الكود صح علشان ده ما اشتغلش معايا

#14

لا أملك VB ،

حاول تصلح الأخطاء التي تظهر لك .. اعتقد شغلتها بسيطة .. ماهي الاخطاء بالظبط ؟

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#15

بيقولى الخطأ فى الكود ده

PixelFormat = Gdi.ChoosePixelFormat(ghDC, pfd)

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

#16

يجب أن تحذف هذا السطر ؟

وبعدها تلصق الأسطر الأربعة ..

أرجو أن تقرأ ردّي السابق رقم #15 ..

أنا لا أملك VB.net .. لذلك لا أستطيع أن أجرب بنفسي .

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#17

معلش ما كنتش واخد بالى

تمام بس ال numFormats معناه ايه علشان ده بيدينى Error عنده

#18

السلام عليكم

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

ك :

Anti-aliasing.jpg

أتمنى التوفيق.

تخيل, هل سيكون مستقبل الأوبن جي أل مع البشرية هكذا

future.jpg
#19

طيب بعد اذنك اشغلها ازاى الطريه دى Antialiasing

علشان انا كا اعرفش عنها حاجه وجزاكم الله كل خير

#20

طيب .. من جديد ( إنسى الكلام اللي قلته لك في المشاركة 15 ) ..

بعد أن تحذف السطر :

PixelFormat = Gdi.ChoosePixelFormat(ghDC, pfd)

ألصق هذه الأسطر .. بدلاً من السطر السابق :

int[] formats = new int[1];

int[] numFormats = new int[1];

        Dim fAttributes() As Single = {0, 0}
        Dim iAttributes() As Integer = {WGL.WGL_DRAW_TO_WINDOW_ARB, GL.GL_TRUE, WGL.WGL_SUPPORT_OPENGL_ARB, GL.GL_TRUE, WGL.WGL_ACCELERATION_ARB, WGL.WGL_FULL_ACCELERATION_ARB, WGL.WGL_COLOR_BITS_ARB, 24, WGL.WGL_ALPHA_BITS_ARB, 8, WGL.WGL_DEPTH_BITS_ARB, 16, WGL.WGL_STENCIL_BITS_ARB, 0, WGL.WGL_DOUBLE_BUFFER_ARB, GL.GL_TRUE, WGL.WGL_SAMPLE_BUFFERS_ARB, GL.GL_TRUE, WGL.WGL_SAMPLES_ARB, 4, 0, 0}

        PixelFormat = Wgl.wglChoosePixelFormatARB(hDC, iAttributes, fAttributes, 1, formats , numFormats)

لاتنسى تضيف هذا السطر أيضاً في المكان المناسب ( دالة الرسم مثلاً ) ،

Gl.glEnable( Gl.GL_MULTISAMPLE );

المصدر :

http://sky.geocities.jp/freakish_osprey/opengl/opengl_fsaa.htm

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#21

اسف يا جماعه المشكله دى بس والله الموضوع مهم بالنسبالى جداا

انظر الصوره فى المرفقات المشكله عندى ان البرنامج بيطلع Error فى السطر التالى

PixelFormat = Wgl.wglChoosePixelFormatARB(hDC, iAttributes, fAttributes, 1, formats, numFormats)

وفى صوره انا مرفقها توضع شكل الخطأ من داخل البرنامج

post-147554-041942400 1285434366_thumb.j

المرفقات
Untitled.jpg
#22

لست متأكد من المشكلة ، لكن في الصورة التي أرفقتها أنت الآن ،

هل تشاهد iهذين السطرين :

Dim format as Integer = 1
Dim numFormats as Integer = 1

احذفهما .. واكتب التالي بدلاً منهما ( لا أذكر syntax بالظبط .. ) :

DIM formats() As Integer={1}
DIM numFormats() As Integer={1}

الدالة تطلب منك تمرير عنوان مصفوفة ، وأنت تمرر لها متغير ( أتوقع هذا ) ،

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#23

نفس المشكله هيا هيا

اعتقد ان Wgl.wglChoosePixelFormatARB ياخذ 7 متغيرات اللى موجودين فى الكود 6 بس راجع كده معاياالكود ده تانى

PixelFormat = Wgl.wglChoosePixelFormatARB(hDC, iAttributes, fAttributes, 1, formats, numFormats)

لو عديت المتغيرات اللى بعد Wgl.wglChoosePixelFormatARB هتلاقيهم 6 بس وهوا المفروض يبقى 7

انا عرفت انهم 7 متغيرات مش 6 علشان انا حذفت اخر حرف فى الكود الفيجوال بيسك بيطلع شاشة الاكمال التلقائى و معاها شاشه صغير بتقول عدد و اسم المتغيرات المطلوبه انا مرفق صوره للتوضيح

post-147554-072485700 1285444871_thumb.j

المرفقات
Untitled.jpg
#24

ايه يا جماعه مافيش حد عنده حل للمشكله دى

ياريت اللى يعرف حل للمشكله يقولى عليها

#25

يا جماعه لو سمحت اللى عارف الحل للمشكله دى ياريت يقولى عليها

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

وجزاكم الله كل خير

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…