# Native Code > برنامه نویسی در Delphi >  راهنمایی درباره OPEN GL

## Bahmany

با سلام
لطفا اگه کسی اطلاعاتی در باره *Open GL* داره مارو راهنمایی کنه
ممنون :خجالت:

----------


## Delphi Skyline

چی بگم ؟
یک تکنولوژی برنامه نویسی گرافیکی سه بعدی و دو بعدی که فعلا تو لینوکس و ... کاربرد داره . نسخه های جدیدش زیاد برای ویندوز کاربرد نداره . از ActiveX آسانتره اما قدرتش یکمی کمتره . برای ویندوز برو سراغ ActiveX زیرا ماله مایکروسافته هو و پایه گرافیک ویندوز روی اینه .

----------


## Bahmany

سلام و مرسی
من یه سری کامپوننت گیر آوردم (GLScene_v09b_Full) که به سادگی یه محیط مثل 3d Max به شما میده و می تونید هرچی خواستید طراحی کنید و حتی فایل *.3ds رو فراخونی کنید فقط نمی دونم رایگانه یا نه چون خیلی امکانات داره و همه کار باهاش میشه کرد
ببدختی نمی تونم ریسک کنم و ازون استفاده کنم
مرسی

----------


## Delphi Skyline

EMule دارید کرک اش رو بگیرید .

----------


## hamed jalili

> به سادگی یه محیط مثل 3d Max به شما میده و می تونید هرچی خواستید طراحی کنید و حتی فایل *.3ds رو فراخونی کنید
> مرسی



این چه کامپوننتی که محیطی مثل  Max رو به شما میده ؟

----------


## gbg

سلام
قبلا اینجا پست داده بودم ولی پاک شده ظاهرا
glscene رو از آدرس زیر بگیرین که رایگان هم هست
http://www.glscene.org
http://glscene.sourceforge.net
البته در شروع کمی کار کردن باهاش سخت به نظر میرسه ولی من که باهاش حال میکنم

----------


## Bahmany

> EMule دارید کرک اش رو بگیرید .


سلام
 EMule چیه ؟
ممنون

----------


## mahshid60

سلام میشه راجع به طریقه نصب open gl  برای من توضیح بدید و اینکه برنامه اش را از چه سایتی می تونم بگیرم ؟ ممنون میشم اگه کمکم کنید.

----------


## delphi.net8

آقای  delphi syline  فکر کنم منظورتون direct X  بوده باشه .

----------


## hamed jalili

میشه لطفا دوستان در مورد OpenGL و DirectX یه توضیح مختصری مبنی بر اینکه برنامه یا محیط برنامه نویسی اینها رو از کجا می تونیم گیر بیاریم و ... ؟

----------


## anubis_ir

http://sunboy455.persiangig.com/Ebook/DELPHI/OpenGL/

----------


## MNosouhi

برای کار کردن با OpenGL احتیاج به هیچ کامپوننتی نیست ، OpenGL قسمتی از کتابخانه دلفی می باشد . در مسیر زیر می تونید  OpenGl Refrence رو پیدا کنید:
Program file-->Borland Delphi7-->Help-->Ms Sdk Help files-->Opengl Refrence

----------


## delphi.net8

در تائید دوستمون باید بگم  بله درسته محیط خواصی نداره میشه تو دلفی  و زبان های دیگه open gl  نوشت  
ولی اینکه کامپوننت خاصی نداره !!  چرا داره  و کامپوننت های جالبی هم داره 
خودم چند تایی دارم که واقعا جالبه آدم حتی از نگاه کردن به اونها لذت میبره 
اگه خواستی واست میل میکنم

----------


## MNosouhi

> ولی اینکه کامپوننت خاصی نداره !! چرا داره


من نگفتم کامپوننت نداره ، گفتم احتیاجی به کامپوننت نیست .
در ضمن یه سی دی دارم که کاملا در مورد OpenGL هستش ، عناوینش هم اینها هستش :
*Learning:*
کتاب فارسی
 Tutorials
*Sources:*
 VB OpenGL
 Delphi OpenGL
 C/C++‎ OpenGL
 Java 3D
*Others :*
3D Objects
Requirements
Tools
Demo

ما این سی دی رو در دانشگاه وقتی که درس "گرافیک کامپیوتری" رو می خوندیم ازش استفاده می کردیم . اگه اشتباه نکنم کار آقای نصیری خودمونه.
در قسمت "کتاب فارسی" ، نحوه کار با OpenGL رو برای دلفی ، VB ، BC++‎ Builder ، VC++‎توضیح داده ، البته تمرکزش بیشتر روی دلفیه.

اگه دوستان کسی سی دی رو خاست برام پیغام خصوصی بذاره.

----------


## ferdosi

> سلام
> قبلا اینجا پست داده بودم ولی پاک شده ظاهرا
> glscene رو از آدرس زیر بگیرین که رایگان هم هست
> http://www.glscene.org
> http://glscene.sourceforge.net
> البته در شروع کمی کار کردن باهاش سخت به نظر میرسه ولی من که باهاش حال میکنم


من دانلود کردن اما Format .7z بود
چه کارش کنم

----------


## gbg

از این لینک بگیر http://sourceforge.net/project/showf...ckage_id=64488
بعد تو دلفی نصب کن

----------


## hamed jalili

خوب در مورد DirecX چه طور ؟
اصلا فرقشون در چیه ؟

----------


## B_YAGHOBI

فرق پایه ایی آنها این است که OpenGL تحت پلت فرم های ویندوز و یونیکس میباشد ولی
DirectX محصول مایکروسافت برای ویندوز میباشد.
یکسری اختلافات گرافیکی و ابزاری نیز باهم دارند.
و آخر اینکه سرعت عملیات ریاضی برای کارهای پیچیده گرافیکی مثل Render برای Shader ها
و همچنین Map کردن Material ها بر روی Object ها در OpenGl بیشتر از DirectX میباشد
(جدا از نوع کارت گرافیکی و Render سخت افزاری آنها )

----------


## hamed jalili

3dsmax وقتی برای اولین بار اجرا میشود از ما می پرسد که DirectX یا OpenGL یا ... پس به نظر شما بهتر است OpenGL رو انتخاب کنیم ؟

راستی فکر میکنم DirectX ؛ Portable تره ، درسته ؟

----------


## B_YAGHOBI

این نظر من نیست که این بهتره و یا اون.

طبق نظر یکسری کارشناسان و مقایسه های انها بوده (تو اینترنت از این مقایسه ها زیاد است)

بله مطمئن باشید OpenGL خیلی سبکتر و راحتر از DirectX کار میکند
و یک مسئله دیگر اینکه مطمئنن به امکانات سخت افزاری کارت گرافیکی نیز توجه داشته باشید
که چه نسخه ایی از OpenGl را و یا DirectX را حمایت میکند.

----------


## B_YAGHOBI

http://www.cprogramming.com/tutorial/openglvs.html

http://www.xmission.com/~legalize/d3d-vs-opengl.html

----------


## hamed jalili

معمولا DirectX بیشتر Support میشه تا OpenGL 
اکثر بازی ها با DirectX مچ هستند تا با OpenGL !
اکثرا برای برنامه نویسی بازی ها از DirectX استفاده میشه شاید دلیلش هم این باشه که Portable تر ه !!


.

----------


## delphi.net8

pesare_khob  آقا من شرمنده 
بد متوجه شدم  فکر کردم گفتین کامپوننت نداره 
 حالا اگه میشه من اون سیدی که گفتین رو میخوام باید چیکار کنم؟

----------


## B_YAGHOBI

یکی از دلایلی که برای بازی از DirectX استفاده میشه این است که DirectX دارای 
یک Game Engine میباشد و توابع آماده برای بازی نوشتن را دارد.

ولی خب همه کارهای گرافیکی گیم نیستند. و همچنین این نیست که DirectX خوب نیست و
بدرد نمیخوره بحث مقایسه این دو میباشد.

----------


## hamed jalili

پس OpenGL برای Game در مقایسه با DirectX ضعیف تره یا کم کاربرد تره ؟
زمینه های دیگه که اینها به صورت عظیم استفاده میشن چیه ؟



.

----------


## مرتضی اصغری

سلام دوستان.
در مورد فرق directX و opengl باید بگم فرق های اساسی بین اون ها وجود داره.اما اساسی ترین نکته که این دو رو در برنا مه نویسی متفاوت میکنه اینه که directX بر اساس OOP کار میکنه ولی opengl یک ساختار procedural داره .در واقع همین باعث شده که directx بشه یه ساختار با ابجکت های بزرگ و کوچیک که یه چیزی حدود 500 مگابایت فضا روی هارد میگیره. این در حالیه که این ابجکتها روابط مخوف و گیج کننده ای دارن. در واقع شما باید یک OOP کار قوی باشین تا بتونید باهاش کار کنید .حالا این در مقابل یه ساختار (opengl) که فقط 2 مگ هارد میگیره چند صد تابع ساده و خوش دست با قابلیت های بالا . تو کار گرافیکی به opengl شک نکنید چون اون برای گرافیک صنعتی طراحی شده. یعنی هر چه در گرافیک بخواین بهتون ارایه میکنه. در ضمن شرکتهای بسیار زیاد و بزرگ و معتبری روش کار میکنن و دارن ارتقا عش میدن. این در حالیه که directx رو فقط میکروسافت ارتقاع میده و هدف ms هم بازار بازیه نه گرافیک.
در ضمن یک برتری اساسی در directx وجود داره .directx علاوه بر گرافیک برای sound و جوی استیک و ... هم ابجکت تدارک دیده و در واقع قطعه ها ی DirectDraw و Direct3d از این محصول رقیب opengl هستند .این در حالیه که opengl فقط برای گرافیک طراحی شده و انصافا هم خیلی خوب طراحی شده.
ولی با همه ی اینها اگه بخواین بازی بسازین نهایتا مجبورید با directsound و ... در ویندوز و یا چیزی مشابه در لینوکس و یونیکس صدای بازی رو برنامه نویسی کنید.
من پیشنهادم اینه که اگه می خواین سریع در گرافیک پیشرفت کنید و برنا مه نویس قدری تو این وادی بشید و در عین حال حوصله ی کار با ابزارهای متفاوت رو دارید برید سراغ opengl.
اما اگه میخواین یه ابزار همه کاره داشته باشید که فقط با یاد گرفتن اون همه کارهاتون راه بیفته  برید سراغ directx . قابل توجه: که کار با dx مخصوصا در اوایل  گیج کننده و ملال اوره و نیاز به درک و دانش گرافیکی بالایی داره ولی وقتی راه افتادین همه چیز مشخص و تکراری میشه.
حالا از اون طرف کار تو opengl ساده شروع میشه و با دنیایی از ابتکار پیش میره.ضمنا این رو بگم که منظورم از تکراری بودن dx این نیست که توش نمیشه ابتکار زد بلکه برعکس میشه زد خیلی خوب هم میشه ولی تست کردن یه ابتکار جدیدتو dx گریه ی ادم رو در میاره ولی تو opengl به سرعت میشه چندین ابتکار رو تست کرد و به این ترتیب سریع پیشرفت کرد.
راستی یه نکته به دوستان خورده گیر به  procedural  بودن opengl بگم به قول اقای نصیری و بسیاری از اساتید تکنولوژی opengl یکی از لذت بخشترین کارها هنگام کار با اپن جی ال انکپسولیشن توابع opengl توی ابجکت هاییه که میسازین.حرف تو این قضیه خیلی زیاده بعدا بیشتر مینویسم و با مدرک هم خواهند بود !

----------


## hamed jalili

مرتضی جان خیلی ممنون از لطفتون .
توضیحات خوبی بود
من بیچاره یه کتاب 900 صفحه ای Download کردم کلی هم پول دادم برام پرینت و صحافی کردن . حالا شما میگین بدرد نخوره ؟
راستی برای طراحی Game  از کدومشون بیشتر استفاده می کنن ؟




.

----------


## مرتضی اصغری

سلام .
برای طراحی بازی از هر دو استفاده میشه. از استفاده های معروف اپن جی ال میشه به quake 3 و از موارد معروف کاربرد دایرکت ایکس میشه به doom3 اشاره کرد. نکته جالب اینه که هر دوی این بازی هارو شرکت بسیار کار درستIDsoftwareساخته. ولی اگه از نظر من بخواین بدونین یه شاهکار گرافیکی که واقعا از دوره خودش جلوتره ولی چون اول شخص نیست ویک بازیه استراتژیک هیچ کس به گرافیکش توجه نکرده warcraft3 هستش.شما وقتی به نورپردازی ها نگاه میکنید سر جاتون خشک میشین . اصلا ادم نمیتونه بفهمه که سازنده هاش از چه شگردی استفاده کردن. و از همه جالب تر system requirment.. این بازیه که بی نظیر پایین و به راحتی میشه روی هر سیستمی اجراش کرد. حالا همه این کارها با چی انجام شده ؟ با directx.خوب از اون ور این بازی شرکت سازندش کیه ؟ billizard. که قوی ترین استدیوی ساخت انیمیشن های 3dدر امریکا  رو در اختیار داره. خوب وقتی یه چنین شرکتی از dxبرای تولید محصولش استفاده میکنه کی جرات داره بگه که این بدرد نخوره ؟ 
من که چنین جراتی ندارم. ! الان وقت نیست بازم با هم بحث میکنیم . فعلا .

----------


## hamed jalili

من هم موافقم 
من منتظر اطلاعات خوب دیگه از طرف شما هستم .

راستی با این توصیفات یکم خیالم راحت شد که کتابم خوب به دردم خواهد خورد .



.

----------


## شفیعی

سلام 
http://nehe.gamedev.net/

----------


## شفیعی

سلام 
در OPENGL وقتی نقاط یا خطوط را رسم می کنیم از وسط شروع می کند مثلا اگر خطوط و نقاط را در یک پانل رسم  کنیم نقاط و خطوط را در وسط پانل رسم می کند برای اینکه نقاط و خطوط را از گوشه چپ و پایین پانل رسم کند باید چکار کرد

----------


## مرتضی اصغری

سلام.
خوب باید از glTranslatf استفاده کنید.
به این صورت که ابتدا glLoadIdentity رو فراخونی کنید . بعد glTranslatf  رو با مقادیر X= - (with/2)  و  Y= - (heigth/2)  و Z  رو که دیگه خودتون باید انتخاب کنید. ضمنا هر کدام از پارامترها نصف شدند چون مرکز فعلی دستگاه در وسط پنجره قرار دارد. به این ترتیب گوشه ی سمت چپ پایین به اندازه ی نصف عرض پنجره در راستای محور Y  و نصف طول پنجره در راستای محور X از مرکز فعلی فاصله دارند. و هرکدام از مقادیر منفی شدند چون نقاط سمت چپ و پایین نسبت به مرکز دارای مقادیر منفی هستند.

----------


## شفیعی

سلام 

procedure DrawPoint(SIZE: INTEGER;ST:TStringGrid);
VAR T:INTEGER;
    S,S1,S2,X1,Y1:STRING;
    AXY : XY ;
    Color: LongInt;
    R, G, B, Gr: Byte;
BEGIN
 BuildFont(FORM1.SpinEdit4.Value);
 glPointSize(SIZE);
 glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
 glLoadIdentity();
 glTranslatef(-1.75,-1.30,-6);
 gluLookAt(X_PAN,Y_PAN,ZOOM, 0,0,-100,  0,1,0);
 AXY:=max_min(St);
 glOrtho(AXY.Xmin,AXY.Xmax,AXY.Ymin,AXY.Ymax,-1,1);
        R := GetRValue(FORM1.ColorBox1.Selected);
        G := GetGValue(FORM1.ColorBox1.Selected);
        B := GetBValue(FORM1.ColorBox1.Selected);
  glColor3ub(B,G,R);
FOR T:=0 TO COUNT DO
BEGIN
    S:=St.Cells[1,t];
  IF S<>'' THEN
   BEGIN
    glPrint(PCHAR(S),strtofloat(St.Cells[2,t]),StrToFloat(St.Cells[3,t]));     // Custom GL "Print" Routine
    glBegin (GL_POINTS);
    glVertex3f(strtofloat(St.Cells[2,t]),StrToFloat(St.Cells[3,t]),0.0);
    glEnd();
   END;
END;
SwapBuffers(f_Hdc);
/////////////////// GROUP
FORM1.ListBox1.Clear;
FOR T:=0 TO COUNT DO
begin
       S:=TRIM(COPY(St.Cells[4,t],2,3));
     IF S <> '' THEN
      BEGIN
       IF LENGTH(S)=1 THEN
          S:=' '+S;
       S:=COPY(St.Cells[4,t],1,1)+' '+S;
       FORM1.ListBox1.Items.Add(TRIM(format('%5s -%7s/%8s ',[S,St.Cells[2,t],St.Cells[3,t]])));
      END;
end;
IF FORM1.ViewGroup1.Checked THEN
BEGIN
glBegin (GL_LINE_STRIP);
FOR T:=1 TO FORM1.ListBox1.Count-1 DO
BEGIN
  S1:=FORM1.ListBox1.Items.Strings[T-1];
  X1 := COPY(S1,7,7);
  Y1 := COPY(S1,15,8);
  S1:=COPY(FORM1.ListBox1.Items.Strings[T-1],1,2);
  S2:=COPY(FORM1.ListBox1.Items.Strings[T],1,2);
IF S1=S2 THEN
   glVertex3f(strtofloat(X1),StrToFloat(Y1),0.0)
ELSE
BEGIN
     glVertex3f(strtofloat(X1),StrToFloat(Y1),0.0);
     glEnd();
     glBegin (GL_LINE_STRIP);
END;
END;
  glVertex3f(strtofloat(X1),StrToFloat(Y1),0.0);
  glEnd();
  SwapBuffers(f_Hdc);
END;
end;

----------


## شفیعی

سلام 
اگر بخواهیم برای برنامه ای که درآن از OPENGL استفاده کرده ایم SETUP بسازیم چکار باید بکنیم

----------

