می شود در به در واژه بازار نبود

می شود در به در واژه  بازار نبود

می توان تقدیم کرد و پشیزی به پشیزی نفروخت

می توان عشق به آنها آموخت

OpenGL vs. DirectX: A Comparison

این هم یک مقایسه که نشان دهنده قدرت OpenGL در برابر DirectX

Feature:

OpenGL

DirectX

Vertex Blending

N/A

Yes

Multiple Operating Systems

Yes

No

Extension Mechanism

Yes

Yes

Development

Multiple member Board

Microsoft

Thorough Specification

Yes

No

Two-sided lighting

Yes

No

Volume Textures

Yes

No

Hardware independent Z-buffers

Yes

No

Accumulation buffers

Yes

No

Full-screen Antialiasing

Yes

Yes

Motion Blur

Yes

Yes

Depth of field

Yes

Yes

Stereo Rendering

Yes

No

Point-size/line-width attributes

Yes

No

Picking

Yes

No

Parametric curves and surfaces

Yes

No

Cache geometry

Display Lists

Vertex Buffers

System emulation

Hardware not present

Let app determine

Interface

Procedure calls

COM

Updates

Yearly

Yearly

Source Code

Sample

SDK Implementation

از سایت cprogramming.com

درس 9 : ساخت کلاس object برای تکان دادن اشیا و انجام اعمال دیگر

قبل از شروع درس این را بگویم که تا امروز این پروژه دارای چند فایل است

1. main.cpp

2. object.h

3.  functions .h

4. definations.h

5. timer.h

البته تا  الان شما هیچ کدام از این فایل هارا ندیدید ! اگر کمی صبر کنید توضیحات همه این ها را می اورم.

1.این که main برنامه هست و فعلا کار خاصی انجام نمی دهد

2.این هم در این درس توضیح می دهم

3.این یکی شامل توابع عمومی هست که در برنامه استفاده می شود

4.شامل تعریف متغییر ها و ثابت های کلی است

5.در درس بعد توضیح  می دهم

 

 

خوب حالا وقت توضیح کلاس object رسیده شکل اولیه این کلاس به شکل زیر است

 

class object

{

private:

             

      int x;//mokhtasaate X

      int y;//mokhtasaate Y

      int xVel;//sorat object dar raastaaie x

      int yVel;//sorat object dar raastaaie y

      SDL_Surface *pic;//axe object

public:

      //taabe saazandeh

      object(int p1,int p2,SDL_Surface *p3,int p4,int p5);

      //Move Object baa greftane parameter

      //RIGHT LEFT UP DOWN in harkathaaraa

      //anjaam midahad     

      void moveO(const int);

      //Object raa be screen michasbaanad

      void show();

      //be noghte baa X,Y delkhaah miravad

      void moveToPoint(int,int);         

};

 

xوy مختصات مبدا شی هست xVelوyVel هم همان velocity یا سرعت شی در راستاهای xوy است pic هم یک سطح است که عکس شی را در ان قرار می دهیم به ساختار SDL_Surface در درس های قبل نگاهی بیاندازید

کار moveO و moveToPoint هم تکان دادن شی است

object::object(int p1,int p2,SDL_Surface *p3,int p4,int p5)

{

  xVel = p1;

  yVel= p2;

  pic = p3;

  x = p4;

  y = p5;

}

تابع سازنده با گرفتن 5 پارامتر متغییر ها را تنظیم می کند.

void object::moveO(const int p1)

{

    switch(p1)

    {

       case LEFT :

                           if(x>xBoundLeft) // check mikonad ke az chap mahdoodeh khaarej nashavad

                             x-=xVel;

                           break;

       case RIGHT :

                   if(x+pic->w<xBoundRight)// check mikonad baraie raast        

                             x+=xVel;

                           break;

       case UP :

                           if(y>yBoundUp) // vaase baalaa

                             y-=yVel;

                           break;

       case DOWN :

                           if(y+pic->h<yBoundDown) // vaase paain

                             y+=yVel;

                           break;         

             

    } 

    

} 

خوب یکسری از این ها در Definations.h تعریف شده اند با فرستادن پارامتر مناسب شی را حرکت می دهد و متغییر های Bound هم محدوده حرکت اشیا را تعیین می کنند

void object::show()

{

     apply_surface(x,y,pic,screen,NULL);    

}        

تابع show هم کار چسباندن به screen را انجام می دهد

void object::moveToPoint(int p1,int p2)

{

            if((x != p1)||(y !=p2))

            {

                        if(x<p1)

                                    x += xVel;

                        else

                                    x -= xVel;

                        if(y<p2)

                                    y += yVel;

                        else

                                    y -= yVel;

            }

}

تابع moveToPoint هم که فعلا BUG دارد با گرفتن نقطه تا وقت برابری X,Y شی با آن نقطه یکی یکی به x,y اضافه می کند.

به نام خدا :

پروژه را امروز شروع می کنم

شاید به این لیست بعدا یه چیزایی اضافه بشود.

حداقل چیزایی که لازم داریم :

1.اسم و طرح بازی ( هر دوشون طراحی کردم بعدا می گم )

2.یک کلاس object برای تکان دادن سطوح در صفحه

3.یک کلاس timer که شبیه این ساعت های ورزشی عمل کند واسه تنظیم فرم و نمایش FPS (Frame Per Second) بازی

4.یک کلاس برای مدیریت موس

5.یک کلاس camera برای scroll کردن map و دنبال یک شی رفتن

6.یک تابع برای تشخیص بر خورد دوشی یا دو مربع با هم

7.کار با SDL_Mixer برای صدا گزاری رو بازی

8.ارائه روشی برای دریافت ورودی string از keyboard مثلا IP سرور

9. کار با شبکه به وسیلهSDL_Net  

10.طراحی منو و شخصیت های بازی

11. چگونه دکمه های منو را شفاف کنیم که زیرشون دیده بشود

12.شاید از Multi-Threading هم استفاده کردیم

13.روشی برای خواندن map بازی

14. ...

 

این لیستی از کارهای مورد نیاز برای ساختن هر بازی بعدا لیست تخصصی بازی خودم می گم اگر شما هم می خواهید چیزی به لیست اضافه کنید می توانید

از طرف یه مرده

بعضی اوقات فکر می کنم چرا خدا (خود آ) عشق افرید؟؟؟

بعضی اوقات اینطوری جواب خودم می دم که اگه می خوای تو هر زمینه بهترین باشی باید عاشق اون زمینه باشی ولی این ها جواب های من نیست این ها جواب های غولهایی مثل

استیون جابز که تو ۳۵ سالگی ازدواج می کنند و جزو ۴-۵ تا میلیاردر اول این کره خاکی می شن...

  من جواب خودم می خوام ولی پیداش نکردم ...............______________  مرد

با عرض سلام

من کار رو بازی شروع کردم به زودی توضیحاتش می زارم رو وبلاگ باید روش کامل فکر کنم

-----

یک چیز مهم دیگه اینه که اگر بخواهید از OpenGL 2.0 استفاده کنید کلا ورژن های بعد از ۱.۱ شما دیگر نمی توانید از ویژوال استیدیو مایکروسافت به راحتی استفاده کنید زیرا  مایکروسافت برای حمایت از DirectX خود دست به خیانتی دیگر زده! و فقط همان نسخه سالهای اولیه بوجود امدن OpenGL را در درون ویژوال استیدیو خود قرار داده پیشنهاد من در این وضعیت استفاده از

++DEVC است که کمپایلر فوق العاده قوی متن باز و مجانی و با حجم بسیار کم است البته این مطلب فقط برای حرفه ای ها ذکر شد! وگرنه فعلا در این بلاگ VC 6 هم واسه خود کد خدایه !

در بلاگ توضیحات خوبی در مورد دانلود و نصب ++DEVC امده است

 همچنین در این قسمت از وبلاگ اقا ساسان هم مطالب خوبی در مورد استفاده از OpenGL 2

وجود دارد از اقا ساسان هم متشکریم

-----

در مورد سوال اقای کوچول

البته شما استاد من هستید .

در مورد SDL می تونم بگم چیزایی شبیه SDL و Glut وOpenAL و... در اصل مکملهای OpenGL هستند در OpenGL تابعی برای مدیریت کیبرد موس joystick کار نزاشتند(البته تا اونجا که من می دونم) شما با ترکیب OpenGL و SDL به را حتی می توانید برنامه ای بنویسید که روی هر سیستم عاملی با موس و کیبرد کار کند و نه مثلا فقط ویندوز با استفاده از MFC یا Win32 API

با استفاده از SDL می توانید با کتابخانه الحاقی SDL_Mixer (بعدا توضیح می دهم) Mp3 player بسازید که روی هر سیستم عاملی از Mac OS گرفته تا BSD کمپایل شود یا با OpenAL .

و GLUT هم که مکمل قدرتمندی برای OpenGL است برای ساخت پنجره و منو بدون استفاده از دستورات و کلاس های خواص سیستم عاملی خواص بر روی هر کدام از انها...

در اصل این ها به کمک OpenGL امده اند تا در برابر ... همچون DirectX فاتح از میدان بیرون اید

می توانید Direct3D را با OpenGL

 Direct Input را با SDL

DirectSound,DirectMusic را با OpenAL

و ... مکملهای قدرتمند دیگر مقایسه کنید

امیدوارم اطلاعات ناقص من کمکی به خوانندگان وبلاگ کند 

 من از شما می خواهم که من را در گفتار های اشتباهم راهنمایی کنید از Syntax گرفته تا چیزای سنگین!...(شرمنده همه شما)