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

المساعدة في Opengl

بدأه عادل العامر في 25 ديسمبر 2009 · 3 رد · 1,345 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحبا يا شباب احتاج برنامج في open gl وهو عبارة عن ثلاث رسمات مربع و مثلث و دائرة وان يضهرن على الشاشة في حال ضغط على حرف الاول في الاسم مثل الدائرة على حرف s و المثلث على حرف t و المربع على حرف a و ان يتم تحريك الشكل عن طريق الاسهم و ان يتم التكبير و تصغير الشكل عن طريق +و - ارجوا مساعدتي باقصى سرعة ممكنة واذا امكن شرح البرنامج و الدوال مع جزيل الشكر :unsure:

#2

ضع محاولاتك وسيساعدك الاخوة ..

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

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#3

glut.h

#include <whateverYouNeed.h>

#include <windows.h>

#include <C:\GL\glut.h>

void display(){

glClear(GL_COLOR_BUFFER_BIT);

Set the Color

glColor3f(0.5f,0.5f,1.0f);

Translate

glLoadIdentity ();

glTranslatef (0.3, 0.2, 0.0);

Scale

glScalef(1.5, 0.5, 1.0);

Rotate

glRotatef(45.0, 0.0, 0.0, 1.0);

Create Square

glBegin(GL_POLYGON);

glVertex2f(-0.5,-0.5);

glVertex2f(-0.5,0.5);

glVertex2f(0.5,0.5);

glVertex2f(0.5,-0.5);

glEnd();

glColor3f(0.0f,0.0f,1.0f);

glBegin(GL_POLYGON);

glVertex2f(0,0);

glVertex2f(0.4,0);

glVertex2f(0.2,0.5);

glEnd();

glFlush();

}

int main(int argc, char **argv)

{

Initialization

glutInit(&argc,argv);

glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

Window Configuration

glutInitWindowPosition(100,100);

glutInitWindowSize(400,400);

glutCreateWindow("My First Program using OpenGL");

glutDisplayFunc(display);

glClearColor(0.0,0.0,0.0,1.0);

glut loop

glutMainLoop();

}

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

#4

بســــــــــــم الله الرحمن الرحيــــــــــــــــــــم

مرحبا

إليك الأخطاء التالية:

glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

لقد قمت بتجهيز ذاكرتا إيطار framebuffer و لكنك إستعملت فقط واحد منهم عن طريق إستدعاء الدالة glFlush , هذا ليس مرهق لك بل هو مرهق للتطبيق, و لإستغلال ذاكرة الإيطار الثانية نستدعي الدالة glutSwapBuffers .

أما الباقي فهو ناقص.

إليك الشفيرة:

#include<windows.h>
#include <GL/glut.h>

static int object ;
static float i=1, j=0 ;

void init(void)
{
   glClearColor (0.0, 0.0, 0.0, 0.0);
   glShadeModel (GL_SMOOTH);
}

void display(void)
{
   glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   glColor3f (1.0, 1.0, 1.0);
   glLoadIdentity ();             /* إفراغ المصفوفة*/
           /* تحويلات الرؤية  */
   gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
   glTranslatef(j*1.,0.,0.);
   glScalef (i*1.0, i*2.0, i*1.0);
if(object == 1)
{
	glPushMatrix();
	glColor3f(1., 0., 0.);
   	glBegin(GL_TRIANGLES);
   		glVertex3f(1.,1.,0.);
   		glVertex3f(1.,-1.,0.);
   		glVertex3f(-1.,-1.,0.);
   	glEnd();
   	glPopMatrix();
}
else if( object == 2 )
{
	glPushMatrix();
	glColor3f(0., 1., 0.);
   	glBegin(GL_QUADS);
   		glVertex3f(1.,1.,0.);
   		glVertex3f(1.,-1.,0.);
   		glVertex3f(-1.,-1.,0.);
   		glVertex3f(-1.,1.,0.);
   	glEnd();
   	glPopMatrix();
}
   glutSwapBuffers();
}

void reshape (int w, int h)
{
   glViewport (0, 0, (GLsizei) w, (GLsizei) h);
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
   glFrustum (-1.0, 1.0, -1.0, 1.0, 1.5, 20.0);
   glMatrixMode (GL_MODELVIEW);
}

/* ARGSUSED1 */
void keyboard(unsigned char key, int x, int y)
{
   switch (key) {
   	  case 't' :
   	     object = 1;
   	     glutPostRedisplay();
   	     break;
   	  case 'q' :
   	     object = 2;
   	     glutPostRedisplay();
   	     break;
   	  case 'r' :
   	     j = j + 0.1;
   	     if(  j > 2. )  j = 2.;
   	     glutPostRedisplay();
   	     break;
   	  case 'l' :
   	     j = j - 0.2 ;
   	     if( j < -2. )  j = -2.;
   	     glutPostRedisplay();
   	     break;
	  case 43 :
		 i = i + 0.1;
		 if( i > 1.6) i=1.6;
		 glutPostRedisplay();
		 break;
	  case 45 :
		 i = i - 0.2;
		 if( i < 0.2) i=0.2;
		 glutPostRedisplay();
		 break;

      case 27 :
         exit(0);
         break;
   }
}

int main(int argc, char** argv)
{
   glutInit(&argc, argv);
   glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);
   glutGameModeString( "640x480:16@60" );
    // الإنتقال إلى نمط لعبة
   glutEnterGameMode();
   init ();
   glutDisplayFunc(display);
   glutReshapeFunc(reshape);
   glutKeyboardFunc(keyboard);
   glutMainLoop();
   return 0;
}

نضغط على المفاح t لعرض مثلث و على q لعرض مربع و على l للتحريك نحو اليسار و على r للتحريك نحو اليمين

و + أو - للتحجيم.

أتمنى أنك إستفدت.

1

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

future.jpg

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