BAYAN.M.AZEEZ

ظهور نص على شاشة التنفيذ

7 ردود في هذا الموضوع

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

بعرف اني ازعجتكم باسئلتي المتواصله بس انا محتاج لهاي الاسئله ؛

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

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

فارجو ان تتحملوني

المهم:

كيف بدي اكتب على شاشة التنفيذ في الاوبن جي ال ؟؟ يعني يظهر نص على الشاشه؟؟؟

اسف على الاطاله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

void drawText(char*string,int x,int y)
{
char *c;
glPushMatrix();
glTranslatef(x, y,0);
glScalef(.1,-.1,1);

for (c=string; *c != '\0'; c++) {
glutStrokeCharacter(GLUT_STROKE_ROMAN , *c);
}
glPopMatrix();

}

أقتبس هذا الكود من أحد مواضيع الأخ الشمري (مبدع و الله).

كما تلاحظين فإن هذا الكود عبارة عن دالة تستقبل 3 متغيرات، الأول سلسلة نصيه (مؤشر إلى سلسلة نصية)

المتغير الثاني و الثالث يمثلان الموقع الذي سوف يتم الرسم الدالة عليه.

بعد ذلك يتم إستخدام الدالة glutStrokeCharacter التي تقوم بكتابة حرف حرف على الشاشة (لذلك إستخدمنا التكرار) هنالك دالة أخرى أسمها glutBitmapCharacter() تقوم برسم الأحرف أيضا.

طبعا ال

  glPushMatrix();
glTranslatef(x, y,0);
glScalef(.1,-.1,1);

بعض ال Transformations لكي يظهر النص في المكان و الحجم المناسب

الآن بإمكانك إستدعاء هذه الدالة من أي مكان في البرنامج، مثلا:

drawText("Hello World",10,80);

بالتوفيق

تم تعديل بواسطه *خلدون خالد*
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

مرحبا

إن دوال أوبن جي أل لا تقدم حلول للكتابة مباشرة , إذ أنه عليك أن تقوم بتصميم الأحرف على شكل مصفوفة أي كل حرف تضعه في مصفوفة ثم ترسمها عن طريق دالة glBitmap ( راجع الفصل الثامن من هنا http://fly.srk.fer.hr/~unreal/theredbook حول البيتماب, هذا سيفيذك بخيارات لم تكن تحلم بها.

أو خذ بنصيحة الأخ خلدون , فهناك مكتبات جاهزة مثل devil و freeglut و glut و و إلخ.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكراااااااااااااااااا جزيلا لك اخي خلدون وانت ايضا 3ds max2010

على المساعده

لقد استخدمت الدوال الجاهزه كما قال الاخ خلدون .

بالتوفيق

تم تعديل بواسطه بيان محمد
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

---هههه ما شاء لله - الحل صار موجود وانا بدور ,عكلن سوف اترك مشاكرتي باي حال والشكر لاخد خلدون --

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

بعد فحص بسيط بالنت حصلت على ما يلي :

تسطتعين استخدام ال


LOGFONT logfont;

اي انتاج فونت جديد لاستعمال , ومن ثم ملء تفاصيل الفونت مثال :


logfont.lfHeight = -12; // setup font characteristics
logfont.lfWidth = 0;
logfont.lfEscapement = 0;
logfont.lfOrientation = 0;
logfont.lfWeight = FW_NORMAL;
logfont.lfItalic = FALSE;
logfont.lfUnderline = TRUE;
logfont.lfStrikeOut = FALSE;
logfont.lfCharSet = ANSI_CHARSET;
logfont.lfOutPrecision = OUT_DEFAULT_PRECIS;
logfont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
logfont.lfQuality = PROOF_QUALITY;
logfont.lfPitchAndFamily = DEFAULT_PITCH || FF_ROMAN;
strcpy(logfont.lfFaceName,"Verdana");

ومن ثم انتاجه للتحكم به والاستخدام :


hFont = CreateFontIndirect(&logfont);
SelectObject (hdc, CreateFontIndirect(&logfont));
nFontList = glGenLists(128);
wglUseFontOutlines(hdc, 0, 128, nFontList, 0.0f, 0.5f, WGL_FONT_POLYGONS, agmf);
DeleteObject(hFont);

glListBase(nFontList);
glCallLists (11, GL_UNSIGNED_BYTE, "Text Output");

النتيجه :-

image011.jpg

طبعا انا ما شرحتلك الكود ونقلتو من الدرس الاصلي مشروح - حاولت اشغلو لكن ما اقدرت عكم غلطه وصارت 3 الصبح :P

http://www.naturewizard.com/tutorial0105.html

حل اخر هو استخدام ليبري جاهز


glFontBegin(&font)
;glScalef(8.0, 8.0, 8.0)
;glTranslatef(30, 30, 0)
;glFontTextOut("Test", 5, 5, 0)
;glFontEnd

للتحميل http://students.cs.byu.edu/~bfish/glfont.zip

شكرا لطرح السؤال فلقد استفدت ,

بالتوفيق والسموحه عالتقصير ,

تحياتي ,

تم تعديل بواسطه PhaNTzy
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ولأن الشيئ بالشيئ يذكر،

أعجبتني هذه المكتبة في رسم النصوص في ال OpenGL ، هذه المكتبة تعطي نتائج جميلة جدا و إستعمالها بسيط كما لاحظت.

لم أجربها ولكن إليكم رابط الدرس

http://www.arabteam2000-forum.com/index.php?showtopic=137459

طبعا هذه المكتبه تتيح لك إستخدام خطوط النظام، و هو ما لايمكن عملة بإستخدام الطريقة التي تحدثت عنها سابقا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكرا لكم جميعا على هذه الطرق المختلفه

لكن اريد ان اسأل عن الطريقه التي اضافها الاخ خلدون اول شىء:

عندما استخدمها في برنامج يضع احداثيات glOrtho نفس عرض وطول الصفحه المحدد في glInitWindowSize يكتب

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

هل الشرط ان تكون نفس الاحداثيات ام ربما هناك مشكله اخرى؟؟؟؟

ما المشكله؟

تم تعديل بواسطه بيان محمد
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .