شباب وصبايا ممكن أعرف وش هو الهيدر فايل تبع ال gluOrtho3D
شكرا ..........
شباب وصبايا ممكن أعرف وش هو الهيدر فايل تبع ال gluOrtho3D
شكرا ..........
قلت نرد هنا افضل من الرسائل الخاصة : )
الملف هو
glu
يعني تكتب .
#include "GL/glu.h"
واذا صار خطأ اكتب
#include "glu.h"
واربط المكتبة
glu32.lib
لكن اذا ما اشتغل.. رد علي
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri
والله للأسف مامشي معاي
يطلع خطأ
:(
fatal error C1083: Cannot open include file: 'glu.h': No such file or directory
Error executing cl.exe.
هذا الخطأ الي طالعلي
جرب
#include "GL/glu.h"
وان شاء الله رح يشتغل ....
واذا ما اشتغل عطني خبر لانه في حلول .. كثيرة .. : )
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri
عندي هذا الكود وودي افهم فيه بعض الأشياء ياريت لو احد يشرحلي
#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();
}وجزاكم الله الف خير وشكرا لك اخوي شمري واحمد على معاونتكم
اولا الكود اكيد ما راح يشتغل .. هذا اذا كنت قد كتبت الكود كامل ..
لابد تربط هذه الملفات ..
#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 موجودة وانك قمت بربطها ..
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri
الله يعطيك الف عافيه شمري والله الشرح جدا واضح
ووكفيت ووفيت
انا ربطت المكتبات لكن برضو برنامج المكعب مايمشي معاي
ماادري وشو السبب؟؟
هذه اهم نقطة وهي عقدتني كثير ..
وش نوع الخطأ ..
هنا منتدى لحل المشاكل
المشكلة سهلة لكن تحتاج سعة صدر ..
B)
تم تعديل هذه المشاركة بواسطة الشـمري في 18 يوليو 2005 في 13:53
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri
طيب لو سمحت ممكن تدلني على موقع تعليمي للاوبن جي ال لكن يكون عربي
أميرة الورد مشاركة بتاريخ اليوم, 05:56 AM
طيب لو سمحت ممكن تدلني على موقع تعليمي للاوبن جي ال لكن يكون عربي
www.nehe.gamedev.net
هو موقع انجليزي - و جميع المبتدئين يدخلون إليه انجليز - عرب ...
ممكن ممتابعة الدروس و اي مشكلة اكتبيها هنا ...
و إن شاء الله اجد الوقت و النت و نكتب
BEng , Electronics and communications.
Embedded systems engineer.
Graphics Programmer
عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح
هذا الموضوع مغلق.