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

مساعده في فهم الكود

بدأه love begin في 9 ديسمبر 2010 · 4 رد · 910 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اود قبل كل شي ان اشكر زملائي في هذا المنتدى على ما يقدموه من جهد

في المساعده فجزاهم الله كل خير

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

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

بزبط

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

لكن رجائي من اصحاب الخبره تجزئته وشرحه كل جزء على حدى

ليستفيد الجميع ولكم من جزيل الشكر

#include<windows.h>
#include<gl/glut.h>
#include<vector>

//***************
const int item = 0 ;
const int item_COLOR = 1 ;
const int item_LINE = 2 ;
const int item_POINT = 3 ;
const int item_COLOR_YELLOW = 4 ;
const int item_COLOR_RED = 5 ;
const int iteml_1 = 6;
const int iteml_2 = 7;
const int iteml_3 = 8;
const int itempoint_1 = 9;
const int itempoint_2 = 10;
const int itempoint_3 = 11;
int r=255,g=255,b=255;
int state = 0;
int x1,x2;
int y1,y2;


struct LinePosition
{
	int x1;
	int y1;

	int x2;
	int y2;
};

struct PointPosition
{
	int x;
	int y;
};

std::vector<LinePosition> lines;
std::vector<PointPosition> points;
//***************

void render()
{
	glClear(GL_COLOR_BUFFER_BIT);
	glLoadIdentity();
	glTranslated(0,0,0);
	glColor3f(r,g,b);
	// ÑÓã ãÑÈÚ
	for(int i=lines.size()-1;i>=0;i--)
	{
		glBegin(GL_LINES);
		glVertex2i(lines.x2,lines.y2);
		glVertex2i(lines.x1,lines.y1);
		glEnd();
	}
	for(int j=points.size()-1;j>=0;j--)
	{
		glBegin(GL_POINTS);
		glVertex2i(points[j].x,points[j].y);
		glEnd();
	}



	glutSwapBuffers();//áÃäå ÇáÑÓã íÊã Úáì ÇáÓØÍ ÇáÎáÝí äÓÊÏÚí åÐÇ ÇáÃãÑ áÃäå ÈäÞá ÇáÕæÑå áÓØÍ ÇáÃãÇãí æÇäå ÇáåÏÝ ÇáÑÆíÓí ÊÓÑíÚ ÇáÚÑÖ ÚÔÇÔå
}

void menu(int i)
{
	switch(i)
	{
	case item_LINE:
			state=0;
			break;
	case item_POINT:
			state=1;
			break;
	case item_COLOR_YELLOW:
		r=255;g=255;b=0;
		break;
	case item_COLOR_RED:
		r=255;g=b=0;
		break;
	case iteml_1:
		glLineWidth(1);
		break;
	case iteml_2:
		glLineWidth(2);
		break;
	case iteml_3:
		glLineWidth(3);
		break;
	case itempoint_1:
		glPointSize(1);
		break;
	case itempoint_2:
		glPointSize(2);
		break;
	case itempoint_3:
		glPointSize(3);
		break;
	}


	glutPostRedisplay(); // update ( !! ãåã ÌÏÇ åÐÇ ÇáÃãÑ !! )
}

void resize(int w,int h)
{
	glViewport(0,0,w,h);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();

	gluOrtho2D(0,w,h,0);

 	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();

}

void statu(int  a, int b , int c)
{

}


void mouse(int b,int s,int x,int y)
{
	if(b == GLUT_LEFT_BUTTON)
	{
		if(s == GLUT_DOWN)
		{

				x1 = x;
				y1 = y;


		}
		else
		{
			x2     = x ;
			y2	   = y ;

			if(state == 0)
			{
				LinePosition line;
				line.x1 = x1;
				line.y1 = y1;
				line.x2 = x2;
				line.y2 = y2;
				lines.push_back(line);
			}

			else if(state == 1)
			{
				PointPosition point;
				point.x = x2;
				point.y = y2;
				points.push_back(point);
			}
	}
	}


	glutPostRedisplay();
}
int main(void)
{
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB );
    glutCreateWindow("Test");

	// ÇÖÇÝÉ ÞÇÆãÉ
	int sub_1 = glutCreateMenu(menu);
	glutAddMenuEntry("LINE",item_LINE);
	glutAddMenuEntry("POINT",item_POINT);



	int sub_2 = glutCreateMenu(menu);
	glutAddMenuEntry("YELLOW",item_COLOR_YELLOW);
	glutAddMenuEntry("RED",item_COLOR_RED);

	int sub_3 = glutCreateMenu(menu);
	glutAddMenuEntry("1",itempoint_1);
	glutAddMenuEntry("2",itempoint_2);
	glutAddMenuEntry("3",itempoint_3);

	int sub_4 = glutCreateMenu(menu);
	glutAddMenuEntry("1",iteml_1);
	glutAddMenuEntry("2",iteml_2);
	glutAddMenuEntry("3",iteml_3);

	int main_menu =  glutCreateMenu(menu);
	glutAddSubMenu("Primative Shapes",sub_1);
	glutAddSubMenu("Color",sub_2);
	glutAddSubMenu("Point Size",sub_3);
	glutAddSubMenu("Line Width",sub_4);
	glutAttachMenu(GLUT_RIGHT_BUTTON );

	glutMouseFunc(mouse);


	//////////////////////////////////
	glutDisplayFunc(render);
    glutReshapeFunc(resize);
	glutMenuStatusFunc(statu);

	glutMainLoop();
	return 0;
}

تم تعديل هذه المشاركة بواسطة love begin في 9 ديسمبر 2010 في 01:17

−1
#2

يا اخوتي 30 مشاهده ولا رد الرجاء افادتنا في الموضوع

ولكم جزيل الشكر

#3

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

ثانيا لا تستطيع أن تطلب شرح كامل الكود و تجزئته، لأنه هذا يعني بشكل ضمني "الرجاء تعليمي كل ال OpenGL" إذا كنت تعرف OpenGL و هناك جزء لم تفهمه من الكود قم بالإشارة إلى ذلك الجزء

و سيقوم من يعرف شرح الكود بشرحة

أما إذا لم تكن تعرف OpenGL فقم أولا بتعلم أساسيات ال OpenGL ثم إن لم تفهم الكود قم بالإشارة إلى الجزء الذي لم تفهمه و سيقوم من يعرف بمساعدتك مشكورا.

هذا هو سبب ال 30 مشاركة بدون رد!! :mellow:

#4

انا اعرف بزبط ما هذا الكود

الكود مصمم بلغة opengl

والبرنامج هو عباره عن برنامج رسام بسيط يرسم نقط وخطوط وانت تختار الرسم اما خط واما نقاط

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

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

تحياتي لكم

#5

تستطيع تعلم الكثير من خلال أخذ اسم كل وظيفة (function) تم استخدامها سطراً فسطراً ووضعها في محرك بحث وقراءة استخدامها.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

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