PDA

View Full Version : راهنمایی درباره OPEN GL



Bahmany
شنبه 16 اردیبهشت 1385, 18:32 عصر
با سلام
لطفا اگه کسی اطلاعاتی در باره Open GL داره مارو راهنمایی کنه
ممنون:خجالت:

Delphi Skyline
یک شنبه 17 اردیبهشت 1385, 20:09 عصر
چی بگم ؟
یک تکنولوژی برنامه نویسی گرافیکی سه بعدی و دو بعدی که فعلا تو لینوکس و ... کاربرد داره . نسخه های جدیدش زیاد برای ویندوز کاربرد نداره . از ActiveX آسانتره اما قدرتش یکمی کمتره . برای ویندوز برو سراغ ActiveX زیرا ماله مایکروسافته هو و پایه گرافیک ویندوز روی اینه .

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

Delphi Skyline
دوشنبه 18 اردیبهشت 1385, 19:59 عصر
EMule دارید کرک اش رو بگیرید .

hamed jalili
دوشنبه 18 اردیبهشت 1385, 20:07 عصر
به سادگی یه محیط مثل 3d Max به شما میده و می تونید هرچی خواستید طراحی کنید و حتی فایل *.3ds رو فراخونی کنید
مرسی


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

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

Bahmany
سه شنبه 19 اردیبهشت 1385, 17:21 عصر
EMule دارید کرک اش رو بگیرید .


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

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

delphi.net8
جمعه 22 اردیبهشت 1385, 22:39 عصر
آقای delphi syline فکر کنم منظورتون direct X بوده باشه .

hamed jalili
شنبه 23 اردیبهشت 1385, 23:12 عصر
میشه لطفا دوستان در مورد OpenGL و DirectX یه توضیح مختصری مبنی بر اینکه برنامه یا محیط برنامه نویسی اینها رو از کجا می تونیم گیر بیاریم و ... ؟

anubis_ir
یک شنبه 24 اردیبهشت 1385, 06:27 صبح
http://sunboy455.persiangig.com/Ebook/DELPHI/OpenGL/

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

delphi.net8
یک شنبه 24 اردیبهشت 1385, 07:48 صبح
در تائید دوستمون باید بگم بله درسته محیط خواصی نداره میشه تو دلفی و زبان های دیگه open gl نوشت
ولی اینکه کامپوننت خاصی نداره !! چرا داره و کامپوننت های جالبی هم داره
خودم چند تایی دارم که واقعا جالبه آدم حتی از نگاه کردن به اونها لذت میبره
اگه خواستی واست میل میکنم

MNosouhi
یک شنبه 24 اردیبهشت 1385, 11:29 صبح
ولی اینکه کامپوننت خاصی نداره !! چرا داره

من نگفتم کامپوننت نداره ، گفتم احتیاجی به کامپوننت نیست .
در ضمن یه سی دی دارم که کاملا در مورد 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
یک شنبه 24 اردیبهشت 1385, 12:54 عصر
سلام
قبلا اینجا پست داده بودم ولی پاک شده ظاهرا
glscene رو از آدرس زیر بگیرین که رایگان هم هست
http://www.glscene.org
http://glscene.sourceforge.net
البته در شروع کمی کار کردن باهاش سخت به نظر میرسه ولی من که باهاش حال میکنم
من دانلود کردن اما Format .7z بود
چه کارش کنم

gbg
یک شنبه 24 اردیبهشت 1385, 13:32 عصر
از این لینک بگیر http://sourceforge.net/project/showfiles.php?group_id=29749&package_id=64488
بعد تو دلفی نصب کن

hamed jalili
دوشنبه 25 اردیبهشت 1385, 00:48 صبح
خوب در مورد DirecX چه طور ؟
اصلا فرقشون در چیه ؟

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

hamed jalili
دوشنبه 25 اردیبهشت 1385, 07:39 صبح
3dsmax وقتی برای اولین بار اجرا میشود از ما می پرسد که DirectX یا OpenGL یا ... پس به نظر شما بهتر است OpenGL رو انتخاب کنیم ؟

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

B_YAGHOBI
دوشنبه 25 اردیبهشت 1385, 08:05 صبح
این نظر من نیست که این بهتره و یا اون.

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

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

B_YAGHOBI
دوشنبه 25 اردیبهشت 1385, 08:13 صبح
http://www.cprogramming.com/tutorial/openglvs.html

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

hamed jalili
دوشنبه 25 اردیبهشت 1385, 22:58 عصر
معمولا DirectX بیشتر Support میشه تا OpenGL
اکثر بازی ها با DirectX مچ هستند تا با OpenGL !
اکثرا برای برنامه نویسی بازی ها از DirectX استفاده میشه شاید دلیلش هم این باشه که Portable تر ه !!


.

delphi.net8
دوشنبه 25 اردیبهشت 1385, 23:19 عصر
pesare_khob آقا من شرمنده
بد متوجه شدم فکر کردم گفتین کامپوننت نداره
حالا اگه میشه من اون سیدی که گفتین رو میخوام باید چیکار کنم؟

B_YAGHOBI
سه شنبه 26 اردیبهشت 1385, 07:27 صبح
یکی از دلایلی که برای بازی از DirectX استفاده میشه این است که DirectX دارای
یک Game Engine میباشد و توابع آماده برای بازی نوشتن را دارد.

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

hamed jalili
سه شنبه 26 اردیبهشت 1385, 23:14 عصر
پس OpenGL برای Game در مقایسه با DirectX ضعیف تره یا کم کاربرد تره ؟
زمینه های دیگه که اینها به صورت عظیم استفاده میشن چیه ؟



.

مرتضی اصغری
چهارشنبه 03 خرداد 1385, 09:14 صبح
سلام دوستان.
در مورد فرق 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
چهارشنبه 03 خرداد 1385, 09:24 صبح
مرتضی جان خیلی ممنون از لطفتون .
توضیحات خوبی بود
من بیچاره یه کتاب 900 صفحه ای Download کردم کلی هم پول دادم برام پرینت و صحافی کردن . حالا شما میگین بدرد نخوره ؟
راستی برای طراحی Game از کدومشون بیشتر استفاده می کنن ؟




.

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

hamed jalili
چهارشنبه 10 خرداد 1385, 20:18 عصر
من هم موافقم
من منتظر اطلاعات خوب دیگه از طرف شما هستم .

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



.

شفیعی
یک شنبه 14 خرداد 1385, 16:27 عصر
سلام
http://nehe.gamedev.net/

شفیعی
سه شنبه 13 تیر 1385, 15:16 عصر
سلام
در OPENGL وقتی نقاط یا خطوط را رسم می کنیم از وسط شروع می کند مثلا اگر خطوط و نقاط را در یک پانل رسم کنیم نقاط و خطوط را در وسط پانل رسم می کند برای اینکه نقاط و خطوط را از گوشه چپ و پایین پانل رسم کند باید چکار کرد

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

شفیعی
شنبه 17 تیر 1385, 19:04 عصر
سلام


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;

شفیعی
سه شنبه 20 تیر 1385, 16:01 عصر
سلام
اگر بخواهیم برای برنامه ای که درآن از OPENGL استفاده کرده ایم SETUP بسازیم چکار باید بکنیم