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

ممكن خدمة صغييييييييييرة

مغلق
بدأه أميرة الورد في 15 يوليو 2005 · 11 رد · 1,174 مشاهدة · في قسم برمجة الألعاب و الرسوميات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

شباب وصبايا ممكن أعرف وش هو الهيدر فايل تبع ال gluOrtho3D

شكرا ..........

#2

قلت نرد هنا افضل من الرسائل الخاصة : )

الملف هو

glu

يعني تكتب .

#include "GL/glu.h"

واذا صار خطأ اكتب

#include "glu.h"

واربط المكتبة

glu32.lib

لكن اذا ما اشتغل.. رد علي

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#3

والله للأسف مامشي معاي

يطلع خطأ

:(

#4

fatal error C1083: Cannot open include file: 'glu.h': No such file or directory

Error executing cl.exe.

هذا الخطأ الي طالعلي

#5

جرب

#include "GL/glu.h"

وان شاء الله رح يشتغل ....

واذا ما اشتغل عطني خبر لانه في حلول .. كثيرة .. : )

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#6

ضع/ي اولاً الملف GL.h في المجلد GL داخل المشروع

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

#7

عندي هذا الكود وودي افهم فيه بعض الأشياء ياريت لو احد يشرحلي

#include <stdlib.h>           
#include <GL/glut.h>              /* glut.h */
#include <math.h>

   GLfloat theta=0.0;

void display(void)

{
/* set clear color to white and clear window */

	GLfloat light[3]={0.0, 10.0, 0.0};
	GLfloat m[16];

	int i;
	for(i=0;i<16;i++) m=0.0;

	light[0]=10.0*sin((6.28/180.0)*theta);
	light[2]=10.0*cos((6.28/180.0)*theta);
	m[0]=m[5]=m[10]=1.0;
	m[7]=-1.0/light[1];
	glClearColor (0.6, 0.2, 0.2, 0.0);
	glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

/* set drawing/fill  color to red */

	glColor3f(0.9, 0.6, 0.6);

/* set up standard orthogonal view with clipping */
/* box as cube of side 2 centered at origin */

	glMatrixMode (GL_PROJECTION);
	glLoadIdentity ();
	glOrtho(-2.0, 2.0, -2.0, 2.0, -5.0, 5.0); 

	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
	gluLookAt(1.0,1.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0);

/* define unit square polygon */

	glBegin(GL_POLYGON);
 	 glVertex3f(-0.5, 0.5, -0.5);
 	 glVertex3f(-0.5, 0.5, 0.5);
 	 glVertex3f(0.5, 0.5, 0.5);
 	 glVertex3f(0.5, 0.5, -0.5);
	glEnd();

	glPushMatrix();
	glTranslatef(light[0], light[1],light[2]);
	glMultMatrixf(m);
	glTranslatef(-light[0], -light[1],-light[2]);
	glColor3f(0.0,0.0,0.0);
	glBegin(GL_POLYGON);
 	 glVertex3f(-0.5, 0.5, -0.5);
 	 glVertex3f(-0.5, 0.5, 0.5);
 	 glVertex3f(0.5, 0.5, 0.5);
 	 glVertex3f(0.5, 0.5, -0.5);
	glEnd();
	glPopMatrix();

/* Swap buffers */

	glutSwapBuffers();

}

void myidle()
{
   theta+=1.5;
   if(theta>360.0) theta-=360;
   glutPostRedisplay();
}

int main(int argc, char** argv)
{

/* Initialize mode and open a window in upper left corner of screen */
/* Window title is name of program (arg[0]) */

	glutInit(&argc,argv);
	glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB |GLUT_DEPTH); 
	glutInitWindowSize(500,500);
	glutInitWindowPosition(0,0);
	glutCreateWindow("shadow");
	glutDisplayFunc(display);
	glEnable(GL_DEPTH_TEST);
	glutIdleFunc(myidle);
	glutMainLoop();

	return 0;
}

يعني زي مثلا

	GLfloat light[3]={0.0, 10.0, 0.0};
	GLfloat m[16];

	int i;
	for(i=0;i<16;i++) m=0.0;

	light[0]=10.0*sin((6.28/180.0)*theta);
	light[2]=10.0*cos((6.28/180.0)*theta);
	m[0]=m[5]=m[10]=1.0;
	m[7]=-1.0/light[1];

وزي هذا

void myidle()
{
   theta+=1.5;
   if(theta>360.0) theta-=360;
   glutPostRedisplay();
}

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

#8

اولا الكود اكيد ما راح يشتغل .. هذا اذا كنت قد كتبت الكود كامل ..

لابد تربط هذه الملفات ..

#include <GL/gl.h>
#include <GL/glaux.h>
#include <GL/glu.h>

يعني الشكل النهائي

#include <GL/gl.h>
#include <GL/glaux.h>
#include <stdlib.h>           
#include <GL/glut.h> 
#include <math.h>

وتربط المكتبات التالية

opengl32.lib glu32.lib glaux.lib glut32.lib

واذا كنت لاتعرف كيف تربطها رد علي .. والمكتبة glut لابد من تحميلها من احد المواقع ..

ااما الملف glaux فهو غير مهم في مثالك هذا لكن .. مهم في امثلة اخرى

بالنسبة لاسئلتك :

انتبه ان تحاول تتعلم من امثلة مثل كذا ...

اوضح لك اكثر ..

اولا

light[3]={0.0, 10.0, 0.0};

هنا احداثيات جسم

لكن في مثالك هنا .. تتعقد اكثر .. لانه ادخل الدوال الدائرية وادخل امور اخرى

void myidle()
{
  theta+=1.5;
  if(theta>360.0) theta-=360;
  glutPostRedisplay();
}

وهذا ايضا تعقيد اخر ..

هي ليست صعبة ابدا ابدا ابدا .. لكن الهدف منها .. اعطاء حركة خاصة للجسم ونحوها ..

انت الان يجب عليك ان تتعلم كيف تعد حركة جسم اعداد عادي جدا وسهل . .

ثم تعمل ما تريد بالكود ..

لكن لو كنت فاهم 100% عندئذ حاول ان تبحث عن الفكرة .

اعرف اني عقدتك ..

لكن صدقني فكرة الكود سهلة جدا . كل ما فعله ..

انه رسم جسمين .. الاول ملون .. والثاني اسود .. يعني كأنه ظلال .. وقام بتحريك الجسم الاسود حركة دائرية ليظهر انها حركة الظل ..

الكود المكتوب يعتمد على الدوال الدائرية لتدوير الجسم .. يعني لازم تعرف تستخدم الدوال الدائرية

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

اولا يفترض انك تعرف كيف تحرك الجسم وذلك عن طريق الدالة glTranslatef ...

ارسم شكل مثل اللي موجود بالكود .. اكيد انك تعرف .

glBegin(GL_POLYGON);
  glVertex3f(-0.5, 0.5, -0.5);
  glVertex3f(-0.5, 0.5, 0.5);
  glVertex3f(0.5, 0.5, 0.5);
  glVertex3f(0.5, 0.5, -0.5);
glEnd();

والان نرسم نفس الجسم يعني كأنه ظل

glColor3f(0.0,0.0,0.0);

glBegin(GL_POLYGON);
  glVertex3f(-0.5, 0.5, -0.5);
  glVertex3f(-0.5, 0.5, 0.5);
  glVertex3f(0.5, 0.5, 0.5);
  glVertex3f(0.5, 0.5, -0.5);
glEnd();

لاحظ جعلنا لونه اسود ..

نغير احداثيات الكميرا

gluLookAt(1.0,1.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0);

الان الجسم الثاني .. الظل ,, سنجعله يدور ..لكن كيف . سنكتب كود اسهل وهو يشابه الفكرة

  const double rad=3.14 
int i=0;

بعد ان اعلنا عن المتغيرات اللازمة ..

 void a()
{
	i+=11;
    
  glutPostRedisplay();
}
ثم
a();
x=cos(i*rad)   ;
y=sin(i*rad) ;

الان قيمة x ستكون بين 1 و -1 .. لانه كما تعلم قيمة الدوال المثلثية تتراوح بين 1 و -1 وسيكون موقع الجسم محصور بين 1 و -1 لذا سيبدا .. 0 ثم 0.1 ,,, 0.2 0.3 0.4 ... 1 0.9 0.8 ... 0 .. -1 ,,

ويبقى الجسم يدور.

اذا جمعنا بين الجتا والجا .. فاننا نحصل على حركة دائرية

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

واخير

glTranslatef(x,y,0);

ثم نرسم الجسم

ووضعت مثال بالمرفقات .

اولا افهم opengl

ثم تعلم الدوال المثلثية .. اقصد طبقها ..

وبعدها انظر الى الامثلة الاعقد ..

لكن تأكد ان مكتبات OPENGL موجودة وانك قمت بربطها ..

gl.zip

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#9

الله يعطيك الف عافيه شمري والله الشرح جدا واضح

ووكفيت ووفيت

انا ربطت المكتبات لكن برضو برنامج المكعب مايمشي معاي

ماادري وشو السبب؟؟

#10

هذه اهم نقطة وهي عقدتني كثير ..

وش نوع الخطأ ..

هنا منتدى لحل المشاكل

المشكلة سهلة لكن تحتاج سعة صدر ..

B)

تم تعديل هذه المشاركة بواسطة الشـمري في 18 يوليو 2005 في 13:53

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#11

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

#12

أميرة الورد مشاركة بتاريخ اليوم, 05:56 AM

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

www.nehe.gamedev.net

هو موقع انجليزي - و جميع المبتدئين يدخلون إليه انجليز - عرب ...

ممكن ممتابعة الدروس و اي مشكلة اكتبيها هنا ...

و إن شاء الله اجد الوقت و النت و نكتب

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

هذا الموضوع مغلق.

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