صفحه 10 از 10 اولاول ... 8910
نمایش نتایج 361 تا 376 از 376

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

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

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

    اینو ببین شاید رستگار شدی

    #include <windows.h>

    #include<GL/glut.h>
    #include <math.h>
    #include <time.h>


    void init()
    {
    glClearColor(0, 0, 0, 0);
    glMatrixMode(GL_PROJECTION);
    gluOrtho2D(0, 200, 0, 200);
    }
    GLint i = 0, j = 30,GLcounter=0;

    GLdouble k = 3;
    void Display()
    {
    //for (k = 0; k<20; k++){
    GLcounter++;
    if (GLcounter > 50) {
    k = -k;
    GLcounter = 0;
    }
    static float fElect1 = 0.0;
    glRotatef(fElect1, 0.0, 1.0, 0.0);
    Sleep(100);
    glTranslatef(k, 0.0, 0.0);
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0, 0.0, 0.0);
    glBegin(GL_QUADS);
    glVertex2i(i, j);
    glVertex2i(i + 15, j + 30);
    glVertex2i(i + 45, j + 30);
    glVertex2i(i + 60, j);
    glEnd();

    glEnable(GL_POINT_SMOOTH);
    glPointSize(35);
    glBegin(GL_POINTS);
    glColor3f(1, 1, 1);
    glVertex2i(i + 20, j);
    glColor3f(1, 1, 1);
    glVertex2i(i + 40, j);
    glEnd();
    glFlush();
    glutSwapBuffers();


    //}
    }
    void keyboard(unsigned char key, int x, int y)
    {
    switch (key) {
    case '1':
    Sleep(180);
    if (k < 0) k = -k;
    glutPostRedisplay();


    break;

    case '2':
    Sleep(290);
    if (k > 0) k = -k;
    glutPostRedisplay();

    break;

    case '3':
    exit(1);
    break;
    case 'X':
    exit(2);


    default:
    break;
    }


    }




    int main(int argc, char **argv)
    {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);


    glutInitWindowSize(500, 500);
    glutInitWindowPosition(200, 200);


    glutCreateWindow("Moving Car");
    init();


    glutDisplayFunc(Display);
    glutKeyboardFunc(keyboard);
    glutIdleFunc(Display);
    glutMainLoop();


    return 0;
    }


  2. #362

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

    یعنی سوال من جواب نداشت؟؟؟؟؟؟؟؟؟؟؟؟

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

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

    نقل قول نوشته شده توسط fareshteh مشاهده تاپیک
    سلام خوبید دوستان من کمک می خوام
    برنامه ای می خوام که با کلیک چپ در محل کلیک نقطه بگذاره با کلیک راست روی نقطه اون رو پاک کنه میشه راهنمایی کنید نمیدونم چطوری پاک کنم بعدم قبل از کلیک چپ یه نقطه میکشه که من نمی خوام بکشه
    اگر بخواهیم راه حل منطقی ارائه بدیم شما باید یک کلاس شامل مختصات x,y درست کنید و در یک لیست ذخیره کنید و سپس در هر بار اجرا تابع نمایش صفحه را پاک و از اول این لیست را رسم کنید و در صورتی که مختصات کلیک راست شد مختصات را بگیرید و با اعضای لیست توسط یک حلقه چک کنید و در صورت تطابق عنصر مربوطه را پاک کنید .
    راه حل سادش اینه که یک دایره با همون مشخصات و رنگ زمینه روش رسم بشه تا پاک بشه
    راه حل دیگه استفاده از پیکینگ است
    شوما هم ایشالا رستگاربشی

  4. #364
    کاربر جدید
    تاریخ عضویت
    دی 1392
    محل زندگی
    اصفهان
    سن
    28
    پست
    3

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

    سلام بچه ها
    من یه پروژه با opengl دارم کسی هست که بهم کمک کنه و بگه چه کاری انجام میده؟
    واسه 8 تیر 93 میخوام خواهش میکنم جوابم رو بدید
    ممنون

  5. #365

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

    سلام دوستان
    ممنون از آموزشتون
    من چند تا نقطه دادم که به هم متصل شه با GL_line_loop درسته اما وقتی با polygon میزنم شکلی که دارم اضلاعش کمتر میشه و اون جزئیات قبلی رو نداره - میخواستم بپرسم کدی هست مثل lines loop باشه اما داخلش هم رنگ کنه؟
    این کد رو ببینید:
    اگه line loop باشه خیلی با پولیگانش فرق میکنه الان loop هست میتونید پولیگان کنید منظورمو متوجه شید

    #include<stdlib.h>
    #include<GL\glut.h>


    void pir(double x , double y)
    {
    glBegin(GL_LINE_LOOP);
    glVertex2d(2895,2235);
    glVertex2d(2880,2220);
    glVertex2d(2865,2205);
    glVertex2d(2865,2190);
    glVertex2d(2850,2175);
    glVertex2d(2835,2160);
    glVertex2d(2820,2115);
    glVertex2d(2805,2040);
    glVertex2d(2790,2010);
    glVertex2d(2775,1965);
    glVertex2d(2760,1920);
    glVertex2d(2745,1890);
    glVertex2d(2715,1860);
    glVertex2d(2685,1815);
    glVertex2d(2700,1770);
    glVertex2d(2670,1725);
    glVertex2d(2655,1695);
    glVertex2d(2640,1650);
    glVertex2d(2625,1590);
    glVertex2d(2610,1545);
    glVertex2d(2625,1515);
    glVertex2d(2610,1425);
    glVertex2d(2610,1380);
    glVertex2d(2610,1290);
    glVertex2d(2625,1245);
    glVertex2d(2640,1170);
    glVertex2d(2655,1080);
    glVertex2d(2655,1020);
    glVertex2d(2685,945);
    glVertex2d(2700,885);
    glVertex2d(2715,810);
    glVertex2d(2730,780);
    glVertex2d(2745,720);
    glVertex2d(2760,660);
    glVertex2d(2775,600);
    glVertex2d(2790,480);
    glVertex2d(2805,360);
    glVertex2d(2820,300);
    glVertex2d(2835,210);
    glVertex2d(2850,60);
    glVertex2d(2850,0);
    glVertex2d(3390,0);
    glVertex2d(3660,0);
    glVertex2d(4830,0);
    glVertex2d(5100,0);
    glVertex2d(5160,0);
    glVertex2d(5175,30);
    glVertex2d(5190,75);
    glVertex2d(5205,90);
    glVertex2d(5220,135);
    glVertex2d(5235,180);
    glVertex2d(5250,210);
    glVertex2d(5265,255);
    glVertex2d(5280,315);
    glVertex2d(5295,360);
    glVertex2d(5310,420);
    glVertex2d(5325,465);
    glVertex2d(5340,525);
    glVertex2d(5355,570);
    glVertex2d(5370,615);
    glVertex2d(5385,660);
    glVertex2d(5400,705);
    glVertex2d(5415,750);
    glVertex2d(5445,825);
    glVertex2d(5445,885);
    glVertex2d(5460,945);
    glVertex2d(5475,1020);
    glVertex2d(5490,1080);
    glVertex2d(5505,1155);
    glVertex2d(5520,1200);
    glVertex2d(5535,1290);
    glVertex2d(5550,1440);
    glVertex2d(5550,1515);
    glVertex2d(5535,1590);
    glVertex2d(5520,1620);
    glVertex2d(5505,1665);
    glVertex2d(5490,1710);
    glVertex2d(5490,1740);
    glVertex2d(5490,1815);
    glVertex2d(5475,1860);
    glVertex2d(5460,1890);
    glVertex2d(5445,1905);
    glVertex2d(5175,1920);
    glVertex2d(4800,1920);
    glVertex2d(3345,1920);
    glVertex2d(3165,2175);
    glVertex2d(2940,2250);
    glVertex2d(2910,2265);
    glVertex2d(2895,2235);


    glEnd();
    }




    void display(void)
    {
    glClear(GL_COLOR_BUFFER_BIT);

    glColor3ub(180,54,65);
    pir(0,0);


    glFlush();
    }



    void main(int argc,char** argv)
    {
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
    glutInitWindowSize(402.75,450);
    glutInitWindowPosition(100,100);
    glutCreateWindow("Amir.S");
    glClearColor(1,1,1,0);
    glMatrixMode(GL_PROJECTION);
    gluOrtho2D(0,8130,0,9000);
    glutDisplayFunc(display);
    glutMainLoop();
    }


    اگه از کد
    glEnable(GL_CULL_FACE); در بعضی از همین کدهایی که خراب میشوند استفاده کنم قبل از پولیگان دقیقا چیزهای اضافه ای که میکشه رو بهم نشون میده ولی من دقیقا برعکس رو میخوام یعنی چیزهای اضافه نباشه فقط خودش باشه
    اگه راهنمایی کنید ممنونتون میشم
    با سپاس

  6. #366

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

    با سلام و خسته نباشید
    ممنون از مطالب مفیدتون .
    من یه مشکل اساسی با برنامه dev C++‎‎‎‎ دارم اونم اینکه موقع اجرا کردن برنامه رسم دو خط به #include <GL/glut.h> گیر میده هر کاری گفتین کردم ولی باز درست نشد
    لطفا کمک کنید فوری فوری

  7. #367

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

    نقل قول نوشته شده توسط raaamin مشاهده تاپیک
    با سلام و خسته نباشید
    ممنون از مطالب مفیدتون .
    من یه مشکل اساسی با برنامه dev C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ ‎‎‎‎‎‎‎‎‎‎ دارم اونم اینکه موقع اجرا کردن برنامه رسم دو خط به #include <GL/glut.h> گیر میده هر کاری گفتین کردم ولی باز درست نشد
    لطفا کمک کنید فوری فوری
    با سلام

    با توجه به اینکه نویسنده هم به این مشکل برخورد کرده سعی در مرتفع کردن آن نموده و راه حل زیر را ارائه نموده:

    نویسنده سعی می کنه تا نصب "اپن جی ال" در "دو سی پلاس پلاس" (نویسنده از devcpp-4.9.9.2 استفاده کرده) را حل کند:

    ابتدا "اپن جی ال" را از لینک زیر دریافت کنید:
    glut-MingW-DEV-C++‎.zip


    سپس آن را از حالت فشرده خارج سازید:

    Figur 1.PNG


    آنگاه دو فایل های glut.h و glut32.def را در مسیر نصب "دو سی پلاس پلاس" در پوشه Include\GL کپی کنید:

    Figur 2.PNG

    حالا فایل های libglut.a و glut32.def را در مسیر نصب "دو سی پلاس پلاس" در پوشه Lib کپی کنید:

    Figur 3.PNG

    و آخرین فایل با نام glut32.dll را در مسیر نصب ویندوز در پوشه Windows\System32 کپی نمایید:


    Figur 4.PNG

    حالا کار نصب "اپن جی ال" به پایان رسیده است.
    ================================================== ================================================== ==========================

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

    ابتدا یک پروژه جدید با نام دلخواه ایجاد کنید:

    Figur 5.PNG

    سپس یک "سورس فایل" با نام دلخواه به پروژه اضافه کنید:

    Figur 6.PNG

    اکنون کد زیر را در "سورس فایل" کپی نمایید:


    #include <GL/glut.h>


    const int A = 500; /* length of a side of the monitor window */
    const float B = 500; /* length of a side of the clipping rectangle */
    const float C = 200; /* length of a side of the square the program draws */


    void myinit(void)
    {
    glClearColor(0.7, 0.7, 0.7, 0.0); /* gray background */

    glMatrixMode(GL_PROJECTION); /* In World coordinates: */
    glLoadIdentity(); /* position the "clipping rectangle" */
    gluOrtho2D( -B/2, B/2, -B/2, B/2);/* at -B/2, its right edge at +B/2, its bottom */
    glMatrixMode(GL_MODELVIEW); /* edge at -B/2 and its top edge at +B/2 */
    }


    void display( void )
    {

    glClear(GL_COLOR_BUFFER_BIT); /* clear the window */

    glMatrixMode(GL_MODELVIEW); /* The following coordinates are expressed */
    glLoadIdentity(); /* in terms of World coordinates */


    glBegin(GL_POLYGON) ; /* draw a filled polygon */
    glColor3f ( 1.0, 0.3, 0.2); /* draw in light red */
    glVertex2f( -C/2, -C/2 ); /* (x,y) */
    glVertex2f( C/2, -C/2 ); /* (x,y) */
    glVertex2f( C/2, C/2 ); /* (x,y) */
    glVertex2f( -C/2, C/2 ); /* (x,y) */
    glEnd();


    glFlush(); /* send all commands */
    }


    int main(int argc, char** argv)
    {
    glutInit(&argc,argv);
    glutInitWindowSize( A, A ); /* A x A pixel screen window */


    glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE);
    glutCreateWindow("My Rectangle"); /* window title */
    glutDisplayFunc(display); /* tell OpenGL main loop what */
    myinit(); /* set attributes */


    glutMainLoop(); /* pass control to the main loop */

    return 0;
    }




    Figur 7.PNG

    سپس پروژه و سورس فایل را ذخیره نمایید.

    حالا باید فایل زیر را به قسمت پارامتر پروژه اضافه کنید:

    Figur 8.PNG

    ../lib/libopengl32.a
    ../lib/libglu32.a
    ../lib/libglut32.a



    و دیگر وقت اجرای پروژه می باشد.

    Figur 9.PNG

    اکنون کار به پایان رسیده است.
    ================================================== ================================================
    منابع:
    1. http://chortle.ccsu.edu/Bloodshed/howToGL.html
    2. http://www.3dbuzz.com/forum/threads/...compiler-error

    ================================================== ===========================================
    در صورت بروز مشکل پیام بگذارید.

    با تشکر
    آخرین ویرایش به وسیله behzadkhan : پنج شنبه 15 آبان 1393 در 17:18 عصر

  8. #368

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

    فقط یه مشکل هنگام دانلود فایل ضمیمه می نویسه :
    درس مورد نظر وجود ندارد.
    علت :
    1-آدرس را اشتباه تایپ کرده اید.
    2-این صفحه توسط مدیر سایت حذف شده است.
    3- هنگام ایجاد گفتگوی جدید از عناوین نامناسب استفاده شده است.

  9. #369

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

    با سلام

    مشکل برطرف شد.

    با تشکر

  10. #370

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

    این کدهارو ببینید
    یکم کدنویسیش کلک رشتی داره اما مهم خروجیه :)
    مشکلاتش:
    رندوم رو به صورت سراسری میخوام تعریف کنم که دو تا تابع ازش استفاده کنن اما مشکل دار میشه
    میخوام هروقت موس رفت رو دایره که به صورت رندوم ایجاد میشه رنگش عوض شه که خیلی دیر این اتفاق میفته
    لطفا راهنماییم کنید.خیلی وقت ندارم :)
    #include <stdlib.h>
    #include <GL\glut.h>
    #include<math.h>
    bool flag=0;
    int counter=0;
    int i=rand()%5+1;
    void init (void)
    {
    glClearColor (0.0, 0.0, 0.0, 0.0);
    glMatrixMode(GL_PROJECTION);
    gluOrtho2D(0.0, 200.0, 0.0, 150.0);
    }
    //namayeshe moraba'a ha
    void Display(void)
    {

    GLint a[4][2]={{15,140},{65,140},{65,90},{15,90}};
    GLint b[4][2]={{75,140},{125,140},{125,90},{75,90}};
    GLint c[4][2]={{135,140},{185,140},{185,90},{135,90}};
    GLint d[4][2]={{50,75},{100,75},{100,25},{50,25}};
    GLint e[4][2]={{110,75},{160,75},{160,25},{110,25}};




    glBegin(GL_LINE_LOOP);
    glColor3f(0.0, 2.0, 0.0);
    glVertex2iv(a[0]);
    glVertex2iv (a[1]);
    glVertex2iv (a[2]);
    glVertex2iv (a[3]);
    glEnd();

    glBegin(GL_LINE_LOOP);
    glColor3f(0.0, 2.0, 0.0);
    glVertex2iv(b[0]);
    glVertex2iv (b[1]);
    glVertex2iv (b[2]);
    glVertex2iv (b[3]);
    glEnd();

    glBegin(GL_LINE_LOOP);
    glColor3f(0.0, 2.0, 0.0);
    glVertex2iv(c[0]);
    glVertex2iv (c[1]);
    glVertex2iv (c[2]);
    glVertex2iv (c[3]);
    glEnd();

    glBegin(GL_LINE_LOOP);
    glColor3f(0.0, 2.0, 0.0);
    glVertex2iv(d[0]);
    glVertex2iv (d[1]);
    glVertex2iv (d[2]);
    glVertex2iv (d[3]);
    glEnd();


    glBegin(GL_LINE_LOOP);
    glColor3f(0.0, 2.0, 0.0);
    glVertex2iv(e[0]);
    glVertex2iv (e[1]);
    glVertex2iv (e[2]);
    glVertex2iv (e[3]);
    glEnd();

    glFlush();
    glutSwapBuffers();
    }


    //penhan shodan dayere ha
    void hide(int value)
    {

    glClear(GL_COLOR_BUFFER_BIT );

    }

    //emtiaz bandi
    void end(int value)
    {
    if(counter>5)
    {
    glLoadIdentity();
    glClear(GL_COLOR_BUFFER_BIT );
    }

    //else if(counter<5)
    //{
    // glLoadIdentity();
    //glClear(GL_COLOR_BUFFER_BIT );
    //}

    }

    //namayeshe randome dayere ha
    void timer_function( int value)
    {



    if(i==1)
    {
    glClear(GL_COLOR_BUFFER_BIT);
    if (flag) glColor3f(0, 1, 0);
    else glColor3f(1, 1, 1);
    glPushMatrix();
    glTranslatef(40,115.0,0);
    GLUquadricObj *circle = gluNewQuadric ();
    gluQuadricDrawStyle (circle, GLU_FILL);
    gluDisk (circle,0,25,20000,1);
    gluDeleteQuadric(circle);
    glPopMatrix();
    glutSwapBuffers();
    }

    else if(i==2)
    {
    glClear(GL_COLOR_BUFFER_BIT);
    if (flag) glColor3f(0, 1, 0);
    else glColor3f(1, 1, 1);
    glPushMatrix();
    glTranslatef(100,115.0,0.0);
    GLUquadricObj *circle = gluNewQuadric ();
    gluQuadricDrawStyle (circle, GLU_FILL);
    gluDisk (circle,0,25,20000,1);
    gluDeleteQuadric(circle);
    glPopMatrix();
    glutSwapBuffers();
    }


    else if(i==3)
    {
    glClear(GL_COLOR_BUFFER_BIT);
    if (flag) glColor3f(0, 1, 0);
    else glColor3f(1, 1, 1);
    glPushMatrix();
    glTranslatef(160,115,0.0);
    GLUquadricObj *circle = gluNewQuadric ();
    gluQuadricDrawStyle (circle, GLU_FILL);
    gluDisk (circle,0,25,20000,1);
    gluDeleteQuadric(circle);
    glPopMatrix();
    glutSwapBuffers();
    }



    else if(i==4)
    {
    glClear(GL_COLOR_BUFFER_BIT);
    if (flag) glColor3f(0, 1, 0);
    else glColor3f(1, 1, 1);
    glPushMatrix();
    glTranslatef(75,50,0.0);
    GLUquadricObj *circle = gluNewQuadric ();
    gluQuadricDrawStyle (circle, GLU_FILL);
    gluDisk (circle,0,25,20000,1);
    gluDeleteQuadric(circle);
    glPopMatrix();
    glutSwapBuffers();
    }



    else if(i==5)
    {
    glClear(GL_COLOR_BUFFER_BIT);
    if (flag) glColor3f(0, 1, 0);
    else glColor3f(1, 1, 1);
    glPushMatrix();
    glTranslatef(135,50,0.0);
    GLUquadricObj *circle = gluNewQuadric ();
    gluQuadricDrawStyle (circle, GLU_FILL);
    gluDisk (circle,0,25,20000,1);
    gluDeleteQuadric(circle);
    glPopMatrix();
    glutSwapBuffers();
    }

    glutTimerFunc(100,hide,0);
    glutTimerFunc(100,timer_function,0);
    }


    //taghire range dayere ha
    void myMotionFunc( int x, int y )
    {
    switch(i)
    {
    case(1):
    {
    if(sqrt(double(pow(float(abs(40-x)),2)+pow(float(abs(115-y)),2)))>100) flag=0;
    else {flag=1; counter++;}
    }
    break;
    case(2):
    {
    if(sqrt(double(pow(float(abs(100-x)),2)+pow(float(abs(115-y)),2)))>100) flag=0;
    else {flag=1; counter++;}
    }
    break;

    case(3):
    {
    if(sqrt(double(pow(float(abs(160-x)),2)+pow(float(abs(115-y)),2)))>100) flag=0;
    else {flag=1; counter++;}
    }
    break;

    case(4):
    {
    if(sqrt(double(pow(float(abs(75-x)),2)+pow(float(abs(50-y)),2)))>100) flag=0;
    else {flag=1; counter++;}
    }
    break;

    case(5):
    {
    if(sqrt(double(pow(float(abs(135-x)),2)+pow(float(abs(50-y)),2)))>100) flag=0;
    else {flag=1; counter++;}
    }
    break;


    }

    }




    //mohasebeye emtiaz
    //void myMouse(int button, int state, int x, int y)
    //{
    //
    // if(button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
    // {
    // if(flag)
    // counter++;
    //
    // }
    // glutPostRedisplay();
    //}


    int main(int argc, char** argv)
    {
    glutInit(&argc, argv);
    glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize (400, 300);
    glutInitWindowPosition (500, 500);
    glutCreateWindow ("Dash");
    init ();
    glutDisplayFunc (Display);
    glutIdleFunc (Display);
    glutTimerFunc(100,timer_function,0);
    glutTimerFunc(40000,end,0);
    //glutMouseFunc(myMouse);
    glutPassiveMotionFunc (myMotionFunc);
    glutMainLoop();

    }

  11. #371

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

    تاپیک جداگونه میزنم کسی نیست.تو تاپیک موجود پست میزنم بازم کسی نیست

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

  12. #372

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

    سلام من به نقاط برای یه شکل پیچیده احتیاج دارم ترجیحا 3 بعدی خیلی لازم دارم
    ممنون

  13. #373

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

    استفاده از ارایه در مختصات و رسم شکل ها .
    تا حالا از ارایه در ذخیره نقاط و مختصات استفاده نشده
    یه مثال ساده که بقیه دوستان مختصات و نقاط اشکالشون رو از این قاعده استفاده کنند .

    #include <iostream>
    #include <gl/glut.h>
    using namespace std;
    GLfloat verts[4][2] = { 0.3, -0.4, 0.5, 0.5, -0.5, 0.5, -0.7, -0.3 };
    GLfloat colors[4][3] = { 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1 };
    GLenum mode = GL_POINTS;
    void init()
    {
    gluOrtho2D(-3, 3, -3, 3);
    glClearColor(0.5, 0.5, 0.5, 1.0);

    }
    void display()
    {

    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(mode);
    for (int i = 0; i < 4; i++)
    {
    glColor3fv(colors[i]);
    glVertex2fv(verts[i]);
    }
    glEnd();
    glFlush();
    }
    void keyboard(unsigned char key, int x, int y)
    {
    switch (key)
    {
    case '0':
    mode = GL_POINTS;
    break;
    case '1':
    mode = GL_LINES;
    break;
    case '2':
    mode = GL_TRIANGLES;
    break;
    case '3':
    mode = GL_QUADS;
    break;
    case '4':
    mode = GL_LINE_LOOP;
    break;
    }
    glutPostRedisplay();
    }
    void main(int argc, char** argv)
    {
    glutInit(&argc, argv);
    glutInitWindowSize(700, 400);
    glutInitWindowPosition(100, 200);
    glutCreateWindow("First Open Gl to menu");
    init();
    glutDisplayFunc(display);
    glutKeyboardFunc(keyboard);
    glutMainLoop();

    }

  14. #374

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

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

  15. #375

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

    سلام ....میشه این برنامه رو به من توضیح بدین؟؟؟
    ممنون میشم

    #include <windows.h>
    #include <gl/Gl.h>
    #include <gl/glut.h>

    int flag=0;
    int rx,ry;
    int xw,yw,selector=4,selector2=3;
    float rr,gg,bb,ff=4.0;

    //<<<<<<<<<<<<<<<<<<<<<<<< myDisplay >>>>>>>>>>>>>>>>>
    void myDisplay(void)
    {

    glColor3f(0.670f, 0.776f, 0.878f);
    glRectf(0,0,xw,40);

    if(ry<=40)
    { if(rx>=10 && rx<=30)
    {
    selector=1;
    rr=1;
    gg=0;
    bb=0;
    }
    if(rx>=40 && rx<=60)
    {
    selector=2;
    rr=0;
    gg=1;
    bb=0;
    }
    if(rx>=70 && rx<=90)
    {
    selector=3;
    rr=0;
    gg=0;
    bb=1;
    }
    if(rx>=100 && rx<=120)
    {
    selector=4;
    rr=0;
    gg=0;
    bb=0;
    }
    if(rx>=155 && rx<=172)
    {
    selector2=1;
    ff=8;
    }
    if(rx>=173 && rx<=189)
    {
    selector2=2;
    ff=6;
    }
    if(rx>=189 && rx<=203)
    {
    selector2=3;
    ff=4;
    }
    if(rx>=204 && rx<=215)
    {
    selector2=4;
    ff=2;
    }
    }


    if(selector==1)
    {
    glColor3f(0.70f, 0.70f, 0.70f);
    glRectf(5,5,35,35);
    }
    if(selector==2)
    {
    glColor3f(0.70f, 0.70f, 0.70f);
    glRectf(35,5,65,35);
    }
    if(selector==3)
    {
    glColor3f(0.70f, 0.70f, 0.70f);
    glRectf(65,5,95,35);
    }
    if(selector==4)
    {
    glColor3f(0.70f, 0.70f, 0.70f);
    glRectf(95,5,125,35);
    }
    if(selector2==1)
    {
    glColor3f(0.70f, 0.70f, 0.70f);
    glRectf(155,11,172,29);
    }
    if(selector2==2)
    {
    glColor3f(0.70f, 0.70f, 0.70f);
    glRectf(173,11,189,29);
    }
    if(selector2==3)
    {
    glColor3f(0.70f, 0.70f, 0.70f);
    glRectf(189,11,203,29);
    }
    if(selector2==4)
    {
    glColor3f(0.70f, 0.70f, 0.70f);
    glRectf(203,11,215,29);
    }


    glColor3f(1.0f, 0.0f, 0.0f);
    glRectf(10,10,30,30);

    glColor3f(0.0f, 1.0f, 0.0f);
    glRectf(40,10,60,30);

    glColor3f(0.0f, 0.0f, 1.0f);
    glRectf(70,10,90,30);

    glColor3f(0.0f, 0.0f, 0.0f);
    glRectf(100,10,120,30);

    glRectf(150,0,151,40);

    glRectf(160,16,168,24);
    glRectf(178,17,184,23);
    glRectf(194,18,198,22);
    glRectf(208,19,210,21);

    glColor3f(rr, gg, bb);
    glPointSize(ff);


    if (flag==1 && ry>40)
    {
    glBegin(GL_POINTS);
    glVertex2i(rx, ry);
    glEnd();
    }
    glFlush();
    }

    void myMouse(int button, int state, int x, int y)
    {
    if(button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
    {
    flag=1;
    rx=x;
    ry=yw-y;
    }
    glutPostRedisplay();
    }

    void myMouseMotion(int x, int y)
    {
    flag=1;
    rx=x;
    ry=yw-y;
    glutPostRedisplay();
    }


    void myKeyboard(unsigned char ch, int x, int y)
    {

    switch (ch)
    {
    case 'e':
    exit (-1);

    case 'a':
    flag=0;
    glClear(GL_COLOR_BUFFER_BIT); // clear the screen
    break;
    }

    glutPostRedisplay();
    }



    void ChangeSize(GLsizei w, GLsizei h)
    {

    yw=h;
    xw=w;



    glClearColor(1.0,1.0,1.0,0.0);
    // glColor3f(0.0f, 0.0f, 0.0f);

    glClear(GL_COLOR_BUFFER_BIT);
    glMatrixMode(GL_PROJECTION);

    glLoadIdentity();

    glViewport(0,0,w,h);

    gluOrtho2D(0.0, w, 0.0, h);

    }



    //<<<<<<<<<<<<<<<<<<<<<<<< main >>>>>>>>>>>>>>>>>>>>>>
    void main(int argc, char** argv)
    {

    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);

    glutInitWindowSize(640,480);

    glutCreateWindow("board");

    glutDisplayFunc(myDisplay);

    glutReshapeFunc(ChangeSize);

    glutMouseFunc(myMouse);

    glutKeyboardFunc(myKeyboard);

    glutMotionFunc (myMouseMotion);

    glutMainLoop();
    }

  16. #376

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

    سلام کسی کد رسم مثلث و حرکت دادن آن را دارد


صفحه 10 از 10 اولاول ... 8910

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

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

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