صفحه 2 از 10 اولاول 1234 ... آخرآخر
نمایش نتایج 41 تا 80 از 376

نام تاپیک: آموزش OpenGL

  1. #41
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: آموزش OpenGL

    نقل قول نوشته شده توسط zuck_619 مشاهده تاپیک
    چرا ناراحت میشی . سوال کردن که عیب نیست . سوال من اینه که اینجا scrPt مقداردهی نشده و چیزی رسم نمیکنه . مگه یک شی نیست ؟؟؟
    به خدا شرمنده شما ببخشید من اشتباه کردم
    اما خوب اون خط برای این اضافه شده چون ما تابع circlePlotPoints را بعد از تابعی که الان در حال اجراش هستیم فراخوانی می کنیم یعنی این خط به کامپایلر می گه که ما احتیاج به تعریف این تابع داریم در این نقطه شما می تونی این خط رو حذف کنی اینجوری:

    #include <GL/glut.h>

    class scrPt {
    public:
    GLint x, y;
    };

    void setPixel (GLint x, GLint y)
    {
    glBegin (GL_POINTS);
    glVertex2i (x, y);
    glEnd ( );
    }


    void circlePlotPoints (scrPt circCtr, scrPt circPt);
    {
    setPixel (circCtr.x + circPt.x, circCtr.y + circPt.y);
    setPixel (circCtr.x - circPt.x, circCtr.y + circPt.y);
    setPixel (circCtr.x + circPt.x, circCtr.y - circPt.y);
    setPixel (circCtr.x - circPt.x, circCtr.y - circPt.y);
    setPixel (circCtr.x + circPt.y, circCtr.y + circPt.x);
    setPixel (circCtr.x - circPt.y, circCtr.y + circPt.x);
    setPixel (circCtr.x + circPt.y, circCtr.y - circPt.x);
    setPixel (circCtr.x - circPt.y, circCtr.y - circPt.x);
    }


    void circleMidpoint (scrPt circCtr, GLint radius)
    {
    scrPt circPt;

    GLint p = 1 - radius; // Initial value of midpoint parameter.

    circPt.x = 0; // Set coordinates for top point of circle.
    circPt.y = radius;

    /* Plot the initial point in each circle quadrant. */
    circlePlotPoints (circCtr, circPt);

    /* Calculate next points and plot in each octant. */
    while (circPt.x < circPt.y) {
    circPt.x++;
    if (p < 0)
    p += 2 * circPt.x + 1;
    else {
    circPt.y--;
    p += 2 * (circPt.x - circPt.y) + 1;
    }
    circlePlotPoints (circCtr, circPt);
    }
    }


    یا اینجوری

    #include <GL/glut.h>

    class scrPt {
    public:
    GLint x, y;
    };

    void setPixel (GLint x, GLint y)
    {
    glBegin (GL_POINTS);
    glVertex2i (x, y);
    glEnd ( );
    }

    void circlePlotPoints (scrPt, scrPt);

    void circleMidpoint (scrPt circCtr, GLint radius)
    {
    scrPt circPt;

    GLint p = 1 - radius; // Initial value of midpoint parameter.

    circPt.x = 0; // Set coordinates for top point of circle.
    circPt.y = radius;

    /* Plot the initial point in each circle quadrant. */
    circlePlotPoints (circCtr, circPt);

    /* Calculate next points and plot in each octant. */
    while (circPt.x < circPt.y) {
    circPt.x++;
    if (p < 0)
    p += 2 * circPt.x + 1;
    else {
    circPt.y--;
    p += 2 * (circPt.x - circPt.y) + 1;
    }
    circlePlotPoints (circCtr, circPt);
    }
    }

    void circlePlotPoints (scrPt circCtr, scrPt circPt);
    {
    setPixel (circCtr.x + circPt.x, circCtr.y + circPt.y);
    setPixel (circCtr.x - circPt.x, circCtr.y + circPt.y);
    setPixel (circCtr.x + circPt.x, circCtr.y - circPt.y);
    setPixel (circCtr.x - circPt.x, circCtr.y - circPt.y);
    setPixel (circCtr.x + circPt.y, circCtr.y + circPt.x);
    setPixel (circCtr.x - circPt.y, circCtr.y + circPt.x);
    setPixel (circCtr.x + circPt.y, circCtr.y - circPt.x);
    setPixel (circCtr.x - circPt.y, circCtr.y - circPt.x);
    }


  2. #42
    کاربر تازه وارد آواتار zuck_619
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    خونمون
    سن
    34
    پست
    31

    نقل قول: آموزش OpenGL

    دشمنت شرمنده . شما بزرگ مایی ، رو چشه ما جا داری ...
    مشکل حل شد . ممنون
    آخرین ویرایش به وسیله zuck_619 : چهارشنبه 11 فروردین 1389 در 00:37 صبح

  3. #43
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    شمال
    پست
    115

    نقل قول: آموزش OpenGL

    سلام آقای amin1softco .
    بخشید ولی اگه میشه خط به خط یه توضیحی بدین. یه چیزایی فهمیدم ولی خوب بازم مشکل دارم.
    ممنون.
    آخرین ویرایش به وسیله moh.mon : چهارشنبه 11 فروردین 1389 در 10:53 صبح

  4. #44
    کاربر تازه وارد آواتار mandbigS
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تبریز
    سن
    34
    پست
    67

    نقل قول: آموزش OpenGL

    سلام ... خوبی ذاکر ؟ اون عکسی که گذاشتی کپی رایت داره ها ... دقت کنی امضام زیرشه ...
    راستش دوستان منم نفهمیدم ... اگه یکی از دوستان لطف کنه توضیح خط به خط بده ممنون میشم ...
    ولی دستتتون دد نکنه ... خدایی عالی شده ...

  5. #45
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: آموزش OpenGL

    سورس اولی یا سورس دومی؟!!!!!!!

  6. #46
    کاربر تازه وارد آواتار zuck_619
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    خونمون
    سن
    34
    پست
    31

    نقل قول: آموزش OpenGL

    دوست من خودتو درگیر نکن . من براشون توضیح میدم . شما به کارایه خودت برس . کجاش مشکل دارین دوستان ؟ تک تک بپرسین !!!

  7. #47
    کاربر تازه وارد آواتار mandbigS
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تبریز
    سن
    34
    پست
    67

    نقل قول: آموزش OpenGL

    مشکل اول من اینجاس که اصلا رو ویژوالم اجرا نمیشه ... توی سورس اول ارور میده که یه کتابخونه یادت رفته ...
    متن ارور :
    fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?

  8. #48
    کاربر تازه وارد آواتار mandbigS
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تبریز
    سن
    34
    پست
    67

    نقل قول: آموزش OpenGL

    خب مشکل قبلیم اینطوری حل شد : ( میذارم تا دوستانم استفاده کنن )

    In the Solution Explorer pane of the project, right-click the project name, and then click Properties.

    In the left pane, click the C/C++‎ folder.

    Click the Precompiled Headers node.

    In the right pane, click Create/Use Precompiled Header, and then click Not Using Precompiled Headers.

  9. #49
    کاربر تازه وارد آواتار mandbigS
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تبریز
    سن
    34
    پست
    67

    نقل قول: آموزش OpenGL

    خب دوستان حالا یه مشکل دیگه :

    error C2065: 'M_PI' : undeclared identifier

    از کجاست ؟ البته من با include math امتحان کردم نشد با include cmath نوشتم که شامل math هم میشه ... بازم ارور بالارو داد ... حتی از define _USE_MATH_DEFINES هم استفاده کردم نشد ...

  10. #50
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: آموزش OpenGL

    من برای کامپایل شدنش تو صفحات اولیه توضیح دادم که glut رو شما باید تو فولدر سیستم ویندوزتون کپی کنید تا اجرا بشه و هدر ها و سر فایل ها رو اضافه کند من دیگه سپردم به زوک اینم توضیح سورس اول

    #include <math.h> //سر فایل برای توابع سینوس و کسینون
    #include <GL/glut.h> // برای مدیریت پنجره ورودی ها و خروجی ها که سر فایل های هسته اپن جی ال نیز در آن تعریف شده است
    float i=0; // متغیری کلی برای ایجاد حالت انیمیشن
    class scrPt { //یک کلاس ساده که متخصات را نگهداری می کند
    public: // متغیر ها از نوع پابلیک هستند و همه اجازه دستررسی به آنها را دارند
    GLint x, y; // اکس و وای از نوع متغیر ها اصلی اپن جی ال تعریف شده اند
    };

    void setPixel (GLint x, GLint y) // برای تعیین و رس یک پیکسل از این تابع استفاده می کنیم
    {glPointSize (1); // اندازه پیکسل را برابر 1 قرار می دهیم
    glBegin (GL_POINTS); //هر ورتکس یک پیکسل را روشن می کند GL_POINTS با
    glVertex2i (x, y); // رسم هر پیکسل
    glEnd ( ); // پایان رسم
    }

    void circleMidpoint (scrPt circCtr, GLint radius) // تابعی برای رسم دایره به روش نقطه میانی
    {
    scrPt circPt; // تعریف یک متغیر از نوع کلاس مختصات هر نقطه

    GLint p = 1 - radius; // Initial value of midpoint parameter. این مرحله اول در الگوریتم نقطه میانی برای تعیین اولین علامت پی است

    circPt.x = 0; // Set coordinates for top point of circle. ایندو خط طبق الگوریتم مختصات را روی نقطه بالای دایره با شعاع رادیوس تنظیم می کنند.
    circPt.y = radius;

    void circlePlotPoints (scrPt, scrPt); // این خط به کامپایلر می گوید که ما در اینجا به تعریف این تابع نیاز داریم

    /* Plot the initial point in each circle quadrant. */
    circlePlotPoints (circCtr, circPt); // رسم نقطه اولیه در تمام 8 اکتانت دایره

    /* Calculate next points and plot in each octant. این قسمت برای محاسبه نقاط بعدی دایره در کل 8 اکتانت می باشد*/
    while (circPt.x < circPt.y) {
    circPt.x++; // ایکس در هر مرحله باید افزایش پیدا کند
    if (p < 0) // طبق الگوریتم برای پی های مثبت و منفی دو فرمول داریم که با این شرط پیاده سازی می شوند
    p += 2 * circPt.x + 1; // تعیین علامت پی وقتی پی قبلی منفی است
    else {
    circPt.y--; //دو حالت دارد در بعضی مراحل بسته به علامت پی اگر مثبت باشد باید کاهش پیدا کند وگرنه تغییری نمی کند y
    p += 2 * (circPt.x - circPt.y) + 1; // تعیین علامت پی وقتی پی قبلی مثبت است
    }
    circlePlotPoints (circCtr, circPt); // بعد از تعیین ایکس و وای پیکسل در 8 اکتانت دیگر ترسیم می شود
    }
    }

    void circlePlotPoints (scrPt circCtr, scrPt circPt) // تابع برای رسم پیکسل در تمام اکتانت های دایره
    {
    setPixel (circCtr.x + circPt.x, circCtr.y + circPt.y);
    setPixel (circCtr.x - circPt.x, circCtr.y + circPt.y);
    setPixel (circCtr.x + circPt.x, circCtr.y - circPt.y);
    setPixel (circCtr.x - circPt.x, circCtr.y - circPt.y);
    setPixel (circCtr.x + circPt.y, circCtr.y + circPt.x);
    setPixel (circCtr.x - circPt.y, circCtr.y + circPt.x);
    setPixel (circCtr.x + circPt.y, circCtr.y - circPt.x);
    setPixel (circCtr.x - circPt.y, circCtr.y - circPt.x);
    }

    void circle (GLint x, GLint y)//رسم یک پیکسل به صورت درشت که گوشه های آن نرم شده و شبیه به یک دایره تو پر به نظر می رسد
    {glColor3f(1.0, 0.0, 1.0); // تعیین رنگ پیکسل
    glEnable (GL_POINT_SMOOTH); //
    glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);// این دو خط برای نرم کردن گوشه های پیکسل هستند
    glPointSize (120); // تعیین درشتی پیکسل
    glBegin (GL_POINTS);glVertex2i (x, y);glEnd ( ); // رسم پیکسل
    glDisable (GL_POINT_SMOOTH); // غیر فعال کردن نرم کردن اطراف برای ترسیم های بعدی
    }


    void init(void){ // تابع نصب مقادیر اولیه بک گراند بافر ها و تعیین ماتریس و مختصاتی که می خواهیم در آن کار کنیم
    glClearColor(1.0,1.0,1.0,0.0);
    glMatrixMode(GL_PROJECTION); //projection parameters
    gluOrtho2D(0.0,200.0,0.0,150.0); //sets up WC extent
    }
    void dis(void) // تابع اصلی نمایش
    {
    glClear(GL_COLOR_BUFFER_BIT); //clears display window پاک کردن پنجره نمایش در هر بار فراخوانی تابع اصلی نمایش
    glColor3f(0.0, 1.0, 1.0);

    scrPt xy; // تعریف متغیر از نوع کلاس مختصات
    i+=0.1; // افزایش i برای حرکت دایره کوچک
    xy.x=100; // تعیین مختصات ایکس دایره اصلی
    xy.y=75; // تعیین مختصات وای دایره اصلی
    circleMidpoint (xy, 35); // رسم دایره اصلی در نقطه مختصات با شعاع 35
    circle((35*cos((M_PI/180)*(i)))+100,(35*sin((M_PI/180)*(i)))+75);//این تابع کار اصلی به حرکت در آوردن دایره کوچک را انجم می دهد و در هر مر حله مختصات دایره کوچک را روی محیط دایره ایی با شعاع 35 در مختصات 100 و 75 صفحه نمایش تعیین می کند و چون متغیر آی در حال افزایش است هر مر حله در موقعیت جدیدی دایره کوچک رسم می شود.
    if(i>360) i=0; // برای وقتی که دایره کوچک یک دور کامل زد بوسیله این شرط به آی با صفر مقدار دهی می شود که از سر ریز شده آی جلوگیری شود.
    glFlush(); // این تابع به هسته اپن جی ال دستور می دهد که محاسبات را به صورت پایان پذیر انجام دهد
    glutSwapBuffers(); // این تابع جای بافر ها را برای نمایش بدون پرش یا فلیکر عوض می کند
    }

    int main(int argc, char** argv)
    {
    glutInit(&argc, argv); //initialise GLUT
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); //sets display mode
    glutInitWindowPosition(50, 100); //top left display window pos
    glutInitWindowSize(400, 300); //display win width and height in pixel coords
    glutCreateWindow("Example01 - Circle"); //now create display win
    glClearColor(1.0,1.0,1.0,0.0); //display window set to white
    glMatrixMode(GL_PROJECTION); //projection parameters
    gluOrtho2D(0.0,200.0,0.0,150.0); //sets up WC extent
    glutDisplayFunc(dis); //call drawing func
    glutIdleFunc(dis); // اجرای مکرر تابع نمایش اصلی
    glutMainLoop(); //display all and wait
    return 0;
    }

  11. #51
    کاربر تازه وارد آواتار zuck_619
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    خونمون
    سن
    34
    پست
    31

    نقل قول: آموزش OpenGL

    کلاغ عزیز . این همون عدد پی که باید اول برنامه تعریفش کنی . بعد include ها
    #define M_PI 3.141592653589

  12. #52
    کاربر تازه وارد آواتار zuck_619
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    خونمون
    سن
    34
    پست
    31

    نقل قول: آموزش OpenGL

    آقا خیلی ممنمون . خدایی حال میدی .

  13. #53
    کاربر تازه وارد آواتار mandbigS
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تبریز
    سن
    34
    پست
    67

    نقل قول: آموزش OpenGL

    حاجی خیلی ممنون ولی من مشکلم حل نشد ... به M-Pi گیر میده ... ولی بازم دمت گرم

  14. #54
    کاربر تازه وارد آواتار mandbigS
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تبریز
    سن
    34
    پست
    67

    نقل قول: آموزش OpenGL

    یه خورده تو فرومای C++‎ گشتم حل شد ... وافعا ممنون ...

  15. #55
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: آموزش OpenGL

    اینم توضیح تابع دوم

    #include <GL/glut.h> // برای مدیریت پنجره ورودی ها و خروجی ها که سر فایل های هسته اپن جی ال نیز در آن تعریف شده است
    float i=0; // متغیری کلی برای ایجاد حالت انیمیشن
    void Display() // تابع اصلی نمایش
    {
    glClear(GL_COLOR_BUFFER_BIT); //clears display window پاک کردن پنجره نمایش در هر بار فراخوانی تابع اصلی نمایش
    glColor3f(1.0, 0.0, 1.0); // تعیین رنگ پیکسل

    GLUquadricObj *circle = gluNewQuadric (); // ایجاد یک پوینتر برای شی از معادله درجه 2
    gluQuadricDrawStyle (circle, GLU_SILHOUETTE); //تعیین استیل تابع درجه دو از نوع خطی باعث رسم تابع در جه 2 به صورت مجموعه ایی از خطهای اطراف آن می شود
    gluDisk (circle,0,0.8,50,1); // این تابع برای رسم دایره با استیل تعریف شده 50 تکه ایی به شعاع 0.8 می شود
    gluDeleteQuadric(circle); // حذف اشاره گر استیل

    glPushMatrix(); // برای اینکه روی یک قسمت خاص تغییری ایجاد کنیم از این تابع استفاده می کنیم
    glEnable (GL_POINT_SMOOTH);
    glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // این دو خط برای نرم کردن گوشه های پیکسل هستند
    i+=0.04; // افزایش آی برای ایجاد حالت چرخش
    glRotatef(i,0,0,0.1); // چرخش دادن پیکسل به اندازه 0.1 آی
    glPointSize(10.0); // تعیین اندازه پیکسل
    glColor3f(0.0, 1.0, 1.0);
    glBegin(GL_POINTS); //هر ورتکس یک پیکسل را روشن می کند GL_POINTS با
    glVertex2f(0.25, 0.75); //تعیین مختصات نقطه به صورت ثابت
    glEnd(); // پایان ترسیم نقطه
    glPopMatrix(); // پایان قسمتی که تغییرات باید روی آن اعمال شود
    glutSwapBuffers(); // این تابع جای بافر ها را برای نمایش بدون پرش یا فلیکر عوض می کند
    }

    int main(int argc, char **argv)
    {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
    glutInitWindowPosition(500,500);
    glutInitWindowSize(300,300);
    glutCreateWindow("Circle - 01");
    glClearColor(1.0,1.0,1.0,0.0);
    glutDisplayFunc(Display);
    glutIdleFunc(Display);
    glutMainLoop();
    return 0;
    }

  16. #56
    کاربر تازه وارد آواتار zuck_619
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    خونمون
    سن
    34
    پست
    31

    نقل قول: آموزش OpenGL

    دستت درد نکنه . کلاغ مشکلت چی بود ؟

  17. #57
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    شمال
    پست
    115

    نقل قول: آموزش OpenGL

    سلام دوستان.
    اول از امین آقا به خاطر فروم پر باری که را انداخته تشکر می کنم.
    و همچنین از دوستان دیگه که این همه علاقه از خودشون نشون میدن.
    میخواستم چند تا تمرین گرافیک برامون قرار بدین تا بیشتر با برنامه نویسی opengl آشنا شیم.
    در ضمن از ذوک و کلاغ هم تشکر میکنم.

  18. #58
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: آموزش OpenGL

    من والا خودم مثل شما تازه کارم اما میشه با همین برنامه مثال های زیادی ایجاد کرد مثلا
    1- برنامه ایی بنویسید که در آن 2 دایره کوچک روی محیط یک دایره بزرگتر در خلاف جهت همدیگر حرکت کنند.
    2- برنامه ایی بنویسید که با فشردن کلید up صفحه کلید سرعت چرخش دایره های برنامه مثال قبل را زاید و با کلید down سرعت آنرا کم کند.
    3- برنامه ایی بنویسید که در آن یک دایره رو محیط دایره دیگر گردش کرده و این مجموعه نیز دور یک دایره بزرگ تر حرکت کنند.

  19. #59
    کاربر تازه وارد آواتار mandbigS
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تبریز
    سن
    34
    پست
    67

    نقل قول: آموزش OpenGL

    واقعا از تلاش های دوستان امین ، ذوووووووک و موه موم تشکر دارم ... واقعا تلاش دوستان برای یادگیری جای تقدیر داره خدایی ...
    به امید موفقیت تک تکتون

  20. #60
    کاربر تازه وارد آواتار mandbigS
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تبریز
    سن
    34
    پست
    67

    نقل قول: آموزش OpenGL

    من اولیو نوشتم ... البته مطمئنا آماتور هستش ...


    #include <GL/glut.h>
    float i=0;
    float j=0;
    void Display()
    {
    glClear(GL_COLOR_BUFFER_BIT); //clears display window
    glColor3f(0.0, 0.0, 0.0);

    GLUquadricObj *circle = gluNewQuadric ();
    gluQuadricDrawStyle (circle, GLU_SILHOUETTE);
    gluDisk (circle,0,0.8,5000,1);
    gluDeleteQuadric(circle);

    glPushMatrix();
    glEnable (GL_POINT_SMOOTH);
    glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    i+=0.1;
    glRotatef(i,0,0,0.1);
    glPointSize(8.0);
    glColor3f(0.0, 0.0, 1.0);
    glBegin(GL_POINTS);
    glVertex2f(0.25, 0.75);
    glEnd();
    glPopMatrix();

    glPushMatrix();
    glEnable (GL_POINT_SMOOTH);
    glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    j-=1;
    glRotatef(j,0,0,0.1);
    glPointSize(10.0);
    glColor3f(1.0, 0.0, 1.0);
    glBegin(GL_POINTS);
    glVertex2f(0.25, 0.75);
    glEnd();
    glPopMatrix();

    glutSwapBuffers();
    }

    int main(int argc, char **argv)
    {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
    glutInitWindowPosition(500,500);
    glutInitWindowSize(300,300);
    glutCreateWindow("mS Circle");
    glClearColor(1.0,1.0,1.0,0.0);
    glutDisplayFunc(Display);
    glutIdleFunc(Display);
    glutMainLoop();
    return 0;
    }

    آخرین ویرایش به وسیله mandbigS : جمعه 13 فروردین 1389 در 00:29 صبح

  21. #61
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    شمال
    پست
    115

    نقل قول: آموزش OpenGL

    نقل قول نوشته شده توسط amin1softco مشاهده تاپیک
    من والا خودم مثل شما تازه کارم اما میشه با همین برنامه مثال های زیادی ایجاد کرد مثلا
    1- برنامه ایی بنویسید که در آن 2 دایره کوچک روی محیط یک دایره بزرگتر در خلاف جهت همدیگر حرکت کنند.
    2- برنامه ایی بنویسید که با فشردن کلید up صفحه کلید سرعت چرخش دایره های برنامه مثال قبل را زاید و با کلید down سرعت آنرا کم کند.
    3- برنامه ایی بنویسید که در آن یک دایره رو محیط دایره دیگر گردش کرده و این مجموعه نیز دور یک دایره بزرگ تر حرکت کنند.
    اولی که کلاغ عزیز لطف کردن نوشتن. (البته زیاد هم سخت نبود )
    ولی اگه میشه یکم دومی رو بیشتر توضیح بدین.
    چه طوری باید از کاربر داده بگیریم؟

  22. #62
    کاربر تازه وارد آواتار mandbigS
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تبریز
    سن
    34
    پست
    67

    نقل قول: آموزش OpenGL

    آره دیگه من تقلب کردم سریع نوشتم ... دادا جون فکر می کنم باید مثل C#‎ از KeyEventArgs استفاده کنیم ولی نمی دونم تو C++‎ چطوریه ...

  23. #63
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: آموزش OpenGL

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

  24. #64
    کاربر تازه وارد آواتار mandbigS
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تبریز
    سن
    34
    پست
    67

    نقل قول: آموزش OpenGL

    داداشی یه سوال ... میشه بگی چطوری کدهاو با اون شکل تو پست های خودت میاری ؟ یاد مام بدی ممنون می شیم ...

  25. #65
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: آموزش OpenGL

    نقل قول نوشته شده توسط mandbigS مشاهده تاپیک
    داداشی یه سوال ... میشه بگی چطوری کدهاو با اون شکل تو پست های خودت میاری ؟ یاد مام بدی ممنون می شیم ...
    برای کار با کیبرد این پست را ببینید
    https://barnamenevis.org/showpo...7&postcount=16
    برای نوشتن کد به این صورت کدتون رو بیت تگ ها

    [S0URCE="cpp"][/S0URCE]

    قرار بدید

  26. #66
    کاربر تازه وارد آواتار mandbigS
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تبریز
    سن
    34
    پست
    67

    نقل قول: آموزش OpenGL

    من خیلی تلاش کردم ولی جواب نداد ... داداشی میشه بگی چطوری باید ارتباط بین تابع keyboard و display رو برقرار کنیم ؟

  27. #67
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: آموزش OpenGL

    نقل قول نوشته شده توسط mandbigS مشاهده تاپیک
    من خیلی تلاش کردم ولی جواب نداد ... داداشی میشه بگی چطوری باید ارتباط بین تابع keyboard و display رو برقرار کنیم ؟
    ببین این یک برنامه است که دایره بوسیله کلید های up و down روی محیط دایره حرکت می کنه......

    #include <GL/glut.h>
    float i=0;
    void special( int key, int x, int y)
    {
    switch(key){
    case GLUT_KEY_UP:
    i+=1;
    break;
    case GLUT_KEY_DOWN:
    i-=1;
    break;
    }
    }
    void Display()
    {
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(0.0, 0.0, 0.0);

    GLUquadricObj *circle = gluNewQuadric ();
    gluQuadricDrawStyle (circle, GLU_SILHOUETTE);
    gluDisk (circle,0,0.8,5000,1);
    gluDeleteQuadric(circle);

    glPushMatrix();
    glEnable (GL_POINT_SMOOTH);
    glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glRotatef(i,0,0,0.1);
    glPointSize(10.0);
    glColor3f(0.0, 0.0, 1.0);
    glBegin(GL_POINTS);
    glVertex2f(0.25, 0.75);
    glEnd();
    glPopMatrix();

    glutSwapBuffers();
    }

    int main(int argc, char **argv)
    {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
    glutInitWindowPosition(500,500);
    glutInitWindowSize(300,300);
    glutCreateWindow("Circle key");
    glClearColor(1.0,1.0,1.0,0.0);
    glutDisplayFunc(Display);
    glutIdleFunc(Display);
    glutSpecialFunc(special);
    glutMainLoop();
    return 0;
    }

  28. #68
    کاربر تازه وارد آواتار mandbigS
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تبریز
    سن
    34
    پست
    67

    نقل قول: آموزش OpenGL


    #include <GL/glut.h> // برای مدیریت پنجره ورودی ها و خروجی ها که سر فایل های هسته اپن جی ال نیز در آن تعریف شده است
    float i=0;
    float j=0; // متغیری کلی برای ایجاد حالت انیمیشن

    void special( int key, int x, int y)
    {
    switch(key){
    case GLUT_KEY_UP:
    i+=10;
    j-=10;
    break;
    case GLUT_KEY_DOWN:
    i+=0.1;
    j-=0.1;
    break;
    }
    }

    void Display() // تابع اصلی نمایش
    {
    glClear(GL_COLOR_BUFFER_BIT); //clears display window پاک کردن پنجره نمایش در هر بار فراخوانی تابع اصلی نمایش
    glColor3f(0.0, 0.0, 0.0); // تعیین رنگ پیکسل

    GLUquadricObj *circle = gluNewQuadric (); // ایجاد یک پوینتر برای شی از معادله درجه 2
    gluQuadricDrawStyle (circle, GLU_SILHOUETTE); //تعیین استیل تابع درجه دو از نوع خطی باعث رسم تابع در جه 2 به صورت مجموعه ایی از خطهای اطراف آن می شود
    gluDisk (circle,0,0.8,5000,1); // این تابع برای رسم دایره با استیل تعریف شده 5000 تکه ایی به شعاع 0.8 می شود
    gluDeleteQuadric(circle); // حذف اشاره گر استیل

    glPushMatrix(); // برای اینکه روی یک قسمت خاص تغییری ایجاد کنیم از این تابع استفاده می کنیم
    glEnable (GL_POINT_SMOOTH);
    glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // این دو خط برای نرم کردن گوشه های پیکسل هستند
    i+=0.5; // افزایش آی برای ایجاد حالت چرخش
    glRotatef(i,0,0,0.1); // چرخش دادن پیکسل به اندازه 0.1 آی
    glPointSize(8.0); // تعیین اندازه پیکسل
    glColor3f(0.0, 0.0, 1.0);
    glBegin(GL_POINTS); //هر ورتکس یک پیکسل را روشن می کند GL_POINTS با
    glVertex2f(0.25, 0.75); //تعیین مختصات نقطه به صورت ثابت
    glEnd(); // پایان ترسیم نقطه
    glPopMatrix(); // پایان قسمتی که تغییرات باید روی آن اعمال شود

    glPushMatrix(); // برای اینکه روی یک قسمت خاص تغییری ایجاد کنیم از این تابع استفاده می کنیم
    glEnable (GL_POINT_SMOOTH);
    glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // این دو خط برای نرم کردن گوشه های پیکسل هستند
    j-=0.5; // کاهش جی برای ایجاد حالت چرخش
    glRotatef(j,0,0,0.1); // چرخش دادن پیکسل به اندازه 0.1 جی
    glPointSize(10.0); // تعیین اندازه پیکسل
    glColor3f(1.0, 0.0, 1.0);
    glBegin(GL_POINTS); //هر ورتکس یک پیکسل را روشن می کند GL_POINTS با
    glVertex2f(0.25, 0.75); //تعیین مختصات نقطه به صورت ثابت
    glEnd(); // پایان ترسیم نقطه
    glPopMatrix(); // پایان قسمتی که تغییرات باید روی آن اعمال شود

    glutSwapBuffers(); // این تابع جای بافر ها را برای نمایش بدون پرش یا فلیکر عوض می کند
    }

    int main(int argc, char **argv)
    {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
    glutInitWindowPosition(500,500);
    glutInitWindowSize(300,300);
    glutCreateWindow("mS Circle");
    glClearColor(1.0,1.0,1.0,0.0);
    glutDisplayFunc(Display);
    glutIdleFunc(Display);
    glutSpecialFunc(special);
    glutMainLoop();
    return 0;
    }


    داداشی اینو نوشتم وقتی keyup میزنی زیاد میشه ولی وقتی keydown میزنی کم نمیشه ... به نظرتون مشکل از کجاست ؟

  29. #69
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: آموزش OpenGL

    این راهش نیست عزیز
    باید یک متغیر سوم تعریف کنی....
    در ضمن در کدی که شما نوشتی همیشه به مقدار i اضافه میشه در هر دو حالت....

  30. #70
    کاربر تازه وارد آواتار mandbigS
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تبریز
    سن
    34
    پست
    67

    نقل قول: آموزش OpenGL

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


    void special( int key, int x, int y)
    {
    switch(key)
    {
    case GLUT_KEY_UP:
    i+=10;
    j-=10;
    break;
    case GLUT_KEY_DOWN:
    i-=1;
    j+=1;
    break;
    }
    }


    در واقع به جای i+=0.1 بنوسیم i-=1 تا یه مقداری از i کم شه ... همین ... برای j هم همینطور ...

  31. #71
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: آموزش OpenGL

    برای من که درست کار نمی کنه !!!!!!!!!!!!!!!!!!!!!؟

  32. #72
    کاربر تازه وارد آواتار mandbigS
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تبریز
    سن
    34
    پست
    67

    نقل قول: آموزش OpenGL

    برا من کار کرد ... فایل اجرایی رو می ذارم ...
    فایل های ضمیمه فایل های ضمیمه

  33. #73
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: آموزش OpenGL

    نقل قول نوشته شده توسط mandbigS مشاهده تاپیک
    برا من کار کرد ... فایل اجرایی رو می ذارم ...
    خیلی باحالی پسر ...
    منظورم این بود که جواب سوال این نیست یعنی یک دایره ثابت وجود داره شما وقتی کلید up رو فشار می دی شروع به حرکت کنه و هرچقدر بیشتر کلید رو بگیری بیشتر سرعت می گیرهحالا باید کلید down رو وقتی فشار می دیم سرعتش رو کم کنه تا جایی که بایسته و دوباره بر عکس حرکت کنه؟

  34. #74
    کاربر تازه وارد آواتار mandbigS
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تبریز
    سن
    34
    پست
    67

    نقل قول: آموزش OpenGL

    خب داداشی برای ان کار میشه به جای i+=1 از i+=i استفاده کرد که بتونیم به گلوله شتاب بدیم اما اینم نمیشه کنترل کرد ... خیلی سریع پیشرفت می کنه و بعد از چند ثانیه دیگه نمیشه دیدش ... پس من با i+=i/100 به گلوله هل شتاب دادم ... ببین داداشی منظورت اینه ... فایل اجرایی رو گذاشتم ...
    فایل های ضمیمه فایل های ضمیمه

  35. #75
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: آموزش OpenGL

    ببین این راهش نیست تو پست قبلی گفتم یک متغیر دیگه کم داره....

  36. #76
    کاربر تازه وارد آواتار mandbigS
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تبریز
    سن
    34
    پست
    67

    نقل قول: آموزش OpenGL

    ای خدا ... داداشی چیستان شدا ... میشه خودت رو کنی ببینیم چیه ... مرسی

  37. #77
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: آموزش OpenGL

    ببین اینقدر سخت نیست که فکر می کنی

    #include <GL/glut.h> // برای مدیریت پنجره ورودی ها و خروجی ها که سر فایل های هسته اپن جی ال نیز در آن تعریف شده است
    GLfloat m=0.01,i=0.0; // متغیری کلی برای ایجاد حالت انیمیشن
    void special( int key, int x, int y)
    {
    switch(key)
    {
    case GLUT_KEY_UP:
    m+=0.01;
    break;
    case GLUT_KEY_DOWN:
    m-=0.01;
    break;
    }
    }

    void Display() // تابع اصلی نمایش
    {
    glClear(GL_COLOR_BUFFER_BIT); //clears display window پاک کردن پنجره نمایش در هر بار فراخوانی تابع اصلی نمایش
    glColor3f(0.0, 0.0, 0.0); // تعیین رنگ پیکسل

    GLUquadricObj *circle = gluNewQuadric (); // ایجاد یک پوینتر برای شی از معادله درجه 2
    gluQuadricDrawStyle (circle, GLU_SILHOUETTE); //تعیین استیل تابع درجه دو از نوع خطی باعث رسم تابع در جه 2 به صورت مجموعه ایی از خطهای اطراف آن می شود
    gluDisk (circle,0,0.8,5000,1); // این تابع برای رسم دایره با استیل تعریف شده 5000 تکه ایی به شعاع 0.8 می شود
    gluDeleteQuadric(circle); // حذف اشاره گر استیل

    glPushMatrix(); // برای اینکه روی یک قسمت خاص تغییری ایجاد کنیم از این تابع استفاده می کنیم
    glEnable (GL_POINT_SMOOTH);
    glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // این دو خط برای نرم کردن گوشه های پیکسل هستند
    i+=m; // افزایش آی برای ایجاد حالت چرخش
    glRotatef(i,0,0,0.1); // چرخش دادن پیکسل به اندازه 0.1 آی
    glPointSize(8.0); // تعیین اندازه پیکسل
    glColor3f(0.0, 0.0, 1.0);
    glBegin(GL_POINTS); //هر ورتکس یک پیکسل را روشن می کند GL_POINTS با
    glVertex2f(0.25, 0.75); //تعیین مختصات نقطه به صورت ثابت
    glEnd(); // پایان ترسیم نقطه
    glPopMatrix(); // پایان قسمتی که تغییرات باید روی آن اعمال شود

    glPushMatrix(); // برای اینکه روی یک قسمت خاص تغییری ایجاد کنیم از این تابع استفاده می کنیم
    glEnable (GL_POINT_SMOOTH);
    glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // این دو خط برای نرم کردن گوشه های پیکسل هستند

    glRotatef(-i,0,0,0.1); // چرخش دادن پیکسل به اندازه 0.1 جی
    glPointSize(10.0); // تعیین اندازه پیکسل
    glColor3f(1.0, 0.0, 1.0);
    glBegin(GL_POINTS); //هر ورتکس یک پیکسل را روشن می کند GL_POINTS با
    glVertex2f(0.25, 0.75); //تعیین مختصات نقطه به صورت ثابت
    glEnd(); // پایان ترسیم نقطه
    glPopMatrix(); // پایان قسمتی که تغییرات باید روی آن اعمال شود

    glutSwapBuffers(); // این تابع جای بافر ها را برای نمایش بدون پرش یا فلیکر عوض می کند
    }

    int main(int argc, char **argv)
    {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
    glutInitWindowPosition(500,500);
    glutInitWindowSize(300,300);
    glutCreateWindow("mS Circle");
    glClearColor(1.0,1.0,1.0,0.0);
    glutDisplayFunc(Display);
    glutIdleFunc(Display);
    glutSpecialFunc(special);
    glutMainLoop();
    return 0;
    }

  38. #78
    کاربر تازه وارد آواتار mandbigS
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تبریز
    سن
    34
    پست
    67

    نقل قول: آموزش OpenGL

    آهان ... ایول ... کلیت کارو توضیح میدین ؟ منظور این متغیرا چطوری کار میکنن ؟ چطوری پر میشن ؟ چطوری به هم مربوط هستن ؟
    در ضمن داداشی سومیم راهنمایی کن تا شب بنویسیم بره پی کارش ... راهنمایی تپلا ... من خیلی اونو علاقه دارم بنویسم ...

  39. #79
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: آموزش OpenGL

    خوب اینکه خیلی واضحه ما یک i داریم که مقدارش برحسب m تغییر می کنه وقتی که ما با کلید ها مقدار m را کم و زیاد کنیم چون مقدار i بوسیله m تعیین می شه پس در نتیجه سرعت چرخش کم و زیاد می شه ....

  40. #80
    کاربر تازه وارد آواتار mandbigS
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تبریز
    سن
    34
    پست
    67

    نقل قول: آموزش OpenGL

    نقل قول نوشته شده توسط mandbigS مشاهده تاپیک
    در ضمن داداشی سومیم راهنمایی کن تا شب بنویسیم بره پی کارش ... راهنمایی تپلا ... من خیلی اونو علاقه دارم بنویسم ...
    داداشی اینم یه راهنمایی بکن کارشو بسازیم ...

صفحه 2 از 10 اولاول 1234 ... آخرآخر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •