مرحبا يا شباب احتاج برنامج في open gl وهو عبارة عن ثلاث رسمات مربع و مثلث و دائرة وان يضهرن على الشاشة في حال ضغط على حرف الاول في الاسم مثل الدائرة على حرف s و المثلث على حرف t و المربع على حرف a و ان يتم تحريك الشكل عن طريق الاسهم و ان يتم التكبير و تصغير الشكل عن طريق +و - ارجوا مساعدتي باقصى سرعة ممكنة واذا امكن شرح البرنامج و الدوال مع جزيل الشكر :unsure:
المساعدة في Opengl
ضع محاولاتك وسيساعدك الاخوة ..
هذا واجب .. وممنوع أن نحل واجبات في المنتدى بشكل مباشر .
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri
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();
}
هذا كود رسم مثلث و مربع ولا اريد رسم دائرة واريد فقط تحركهن عن طريق الكيبورد و زيادة حجمها لللرسمة و هذا و البرنامج في حالة , وطريقة ادخال الشكل عن طريق اول حرف من اسمه وشكرا هذا اقصى ما عندي
بســــــــــــم الله الرحمن الرحيــــــــــــــــــــم
مرحبا
إليك الأخطاء التالية:
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 للتحريك نحو اليمين
و + أو - للتحجيم.
أتمنى أنك إستفدت.
تخيل, هل سيكون مستقبل الأوبن جي أل مع البشرية هكذا
