صفحه 3 از 10 اولاول 12345 ... آخرآخر
نمایش نتایج 81 تا 120 از 376

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

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

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

    اینم مثل بقیه است فقط دوتا دایره و یک نقطه بیشتر باید روی کاربرد این دقت کنی glPushMatrix();

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

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

    عزیز جان من از ظهر هزار تا چیز بلکه امتحان کردم و نشد ... سیزدهمونم با برنامه در شد ... دادا رو کن ببینیم چجوریه ... نمی دونم چرا با C++‎ و OpenGL اصلا راحت نیستم ... C#‎ خیلی بهتره به نظرم ...

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

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

    ببین شما با سی شارپ بنویس قبولت داریم............... با وی بی هم نوشتی مسئله ایی نیست

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

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

    خب با C#‎‎‎ هم بنویسم باز OpenGl داره دیگه ... ولی ای کاش یه سری پروژه آماده ساده بود تا آدم از روش یاد می گرفت ... چشم بسته که نمی شه نوشت داداشی ... اگه آدرسی چیزی تو نت داری که از اینا داره رو کن ... این آخرین تمرینم بزار که ما تو کفیم ...

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

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

    راستش اینو خودم تا الان ننوشتم اما برای تمرین یک کتاب به نام رد بوک Red book تمرینای خیلی خیلی ساده داره یک نگاه به تمریناش بنداز

  6. #86

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

    اینم کد همون دو تا دایره با تنظیم سرعت :

    #include <GL/glut.h>


    float g_fSpeed;
    float g_fCur_Angle;

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

    //
    void GL_Display(void)
    {
    g_fCur_Angle += g_fSpeed;
    // pak kardane safhe
    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);

    // daire aval
    glPushMatrix();
    glPointSize(5.0);
    glRotatef(g_fCur_Angle,0,0,0.1);
    glColor3f(0.0, 0.0, 1.0);
    glBegin(GL_POINTS);
    glVertex2f(0.25, 0.75);
    glEnd();
    glPopMatrix();

    // daire dovom

    glPushMatrix();
    glPointSize(10.0);
    glRotatef(-g_fCur_Angle,0,0,0.1);
    glColor3f(1.0, 0.0, 1.0);
    glBegin(GL_POINTS);
    glVertex2f(0.25, 0.75);
    glEnd();
    glPopMatrix();

    glutSwapBuffers();
    }

    // initialize function
    void GL_Init(void)
    {
    // pak kardane safhe ba range sefid
    glClearColor(1.0,1.0,1.0,1.0);
    // tanzim sorat harkat be 1
    g_fSpeed = 1.0f;
    g_fCur_Angle = 0.0f;
    // narma kardane (daire kardan) nogat
    glEnable(GL_POINT_SMOOTH);

    }

    int main(int argc, char **argv)
    {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
    glutInitWindowPosition(500,500);
    glutInitWindowSize(400,400);
    glutCreateWindow("Circle");
    GL_Init(); // initializing OpenGL
    glutDisplayFunc(GL_Display);
    glutIdleFunc(GL_Display);
    glutSpecialFunc(special);
    glutMainLoop();
    return 0;
    }



    فکر کنم دنبال این بودین بازم اگر چیزی رو جا انداخته باشم بگین.

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

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

    نمی دونم پویا جون تو چرا به ما که می رسی دقت نمی کنی اینو که جواب دادیم سوال سوم الان مسئله است ؟https://barnamenevis.org/showpo...7&postcount=77

    الان مسئله اینه
    3- برنامه ایی بنویسید که در آن یک دایره رو محیط دایره دیگر گردش کرده و این مجموعه نیز دور یک دایره بزرگ تر حرکت کنند.

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

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

    نقل قول نوشته شده توسط pswin.pooya مشاهده تاپیک
    اینم کد همون دو تا دایره با تنظیم سرعت :

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

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

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

    اینم جواب مسئله ی سوم


    #include <windows.h>
    #include <GL/glut.h>
    GLfloat i=0;
    void Display()
    {
    glClear(GL_COLOR_BUFFER_BIT);

    glPushMatrix();
    glColor3f(1.0, 0.5, 0.0);
    GLUquadricObj *circle = gluNewQuadric ();
    gluQuadricDrawStyle (circle, GLU_SILHOUETTE );
    gluDisk (circle,0,0.77,500,1);


    glRotatef(i,0,0,-i);
    glTranslatef(0.55,0.55,0);

    glPushMatrix();
    glColor3f(1.0, 0.0, 1.0);
    gluQuadricDrawStyle (circle, GLU_LINE );
    gluDisk (circle,0,0.15,10,1);
    gluDeleteQuadric(circle);
    glPopMatrix();

    glPushMatrix();
    glEnable (GL_POINT_SMOOTH);
    glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    i-=0.04;
    glRotatef(i*2,0,0,0.1);
    glPointSize(5.0);
    glColor3f(0.0, 1.0, 1.0);
    glBegin(GL_POINTS);
    glVertex2f(0.11, 0.11);
    glEnd();
    glPopMatrix();
    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;
    }

  10. #90

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

    سلام
    شرمنده از اونجا که وقت ندارم. نمی تونم تاپیک ها طولانی رو بخونم و سعی میکنم تنها به مشکل رسیدگی کنم؟!!!!

    اما در مورد این مسال: همه اینها مثالهای ساده push/pop هستند. بهتون پیشنهاد میکنم که کلا بیخیال push و pop بشین و برین بجاش مستقیما روی ماتریسهای اینها کار کنین. عملا وقتی که بخواین یه پروژه بزرک رو شروع کنید و یا وقتی که بخوایید از OpenGL 3.0 به بعد استفاده کنید دیگه نمی تونید از این دستورها کمک بگیرین. حتی توی OpenGL 2.x هم زمانی که بخوایین از شیدرها استفاده بکنید این مساله تا حدودی مخصوصا برای شیدرها پیچیده صحت پیدا میکنه:

    توی GLSL ویرایش ها 110 (1.10) و 120 ( نیازمند OpenGL 2.1 ، ویرایش 1.2) چند متغییر وجود دارن که می تونین به کمک اونها ماتریس ها مدل نما و ... رو بدست بیارین (مثلا متغییرهای توکار gl_ModelViewMatrix و gl_NormalMatrix) اما داخل ویرایش های بالاتر GLSL یعنی هسته 130 به بالا این متغییرها حذف شدن.

    به طور کلی استفاده از push/pop ماتریسها از رده خارج شده و استفاده از اونها برای برنامه نویسی گرافیکی حرفه ای به طور کل (کاملا) مشکل ساز هستش.

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

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

    برنامه ایی بنویسید که شکل ضمیمه را پیاده سازی کند؟
    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: jpg moj.jpg‏ (3.6 کیلوبایت, 203 دیدار)

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

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

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


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

    void Display(void)
    {
    glClear(GL_COLOR_BUFFER_BIT) ;
    glColor3f(1.0, 0.0, 0.0);

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

    glBegin(GL_LINES);
    glVertex2f(0.90, 0.0);
    glVertex2f(0.40, 0.0);
    glVertex2f(-0.40, 0.0);
    glVertex2f(-0.90, 0.0);
    glEnd();
    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;
    }


    راهنمایی کنید اینم حله ... فایلشم گذاشتم ...
    فایل های ضمیمه فایل های ضمیمه

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

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

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


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


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

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

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

    همینو اگه بخوایم با یک مربع سفید بپوشونیم چه باید بکنبم ؟

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

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

    از تابع زیر می شه استفاده کرد

    glRectf ( x1 , y1 , x2 , y2 ) ;

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

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


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

    void Display(void)
    {
    glClear(GL_COLOR_BUFFER_BIT) ;
    glColor3f(1.0, 0.0, 0.0);

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

    glBegin(GL_LINES);
    glVertex2f(0.90, 0.0);
    glVertex2f(0.40, 0.0);
    glVertex2f(-0.40, 0.0);
    glVertex2f(-0.90, 0.0);
    glEnd();

    glColor3f(1.0, 1.0, 1.0);
    glRectf ( -0.4 , -0.5 , 0.4 , 0 ) ;

    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;
    }



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

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

    آخرش کار خودت رو کردی ها من منظورم این بود


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

    GLfloat pi=3.1415;
    void Display()
    {
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0, 0.5, 0.0);

    glBegin(GL_LINE_STRIP);
    glVertex2f( 0.9,0.0);
    for(GLfloat i=0.0;i<=180;i+=1.0)
    glVertex2f(0.5*cos((pi/180)*i),0.5*sin((pi/180)*i));
    glVertex2f(-0.9,0.0);
    glEnd();
    glutSwapBuffers();
    }

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


    سوال بعدی ساخت یک صفحه ی شطرنج ساده ؟

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

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

    آخرش کار خودت رو کردی ها من منظورم این بود ...
    البته راههای مختلفی وجود داره ...

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

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

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


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

    void Display(void)
    {
    float i , j ;
    int c=1 ;

    for(i=0;i=10;i++)
    {
    for(j=0;j=10;j++)
    {
    c+=1;
    if(c%2==1)
    {
    glClear(GL_COLOR_BUFFER_BIT) ;
    glColor3f(0.0, 0.0, 0.0);
    }
    else
    {
    glClear(GL_COLOR_BUFFER_BIT) ;
    glColor3f(1.0, 1.0, 1.0);
    }

    glRectf ( -i/10 , -j/10 , i/10 , j/10 ) ;
    }
    }

    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;
    }

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

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

    اینم کامل اصلاح شد


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

    void Display(void)
    {
    glClear(GL_COLOR_BUFFER_BIT) ;
    int c=1,i , j ;
    glTranslatef(-0.8,-0.8,0);
    for(j=0;j<8;j++){
    for(i=0;i<8;i++)
    {
    c+=1;
    if(c%2==1)
    {
    glColor3f(0.0, 0.0, 1.0);
    }
    else
    {
    glColor3f(1.0, 1.0, 0.0);
    }

    glRectf ((i*0.21 ), (j*0.21 ) , (i*0.21)+0.2 , (j*0.21 )+0.2 ) ;
    }c+=1;}
    glutSwapBuffers() ;
    }

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



    برنامه بعدی مهره اسب را طراحی کنید؟
    آخرین ویرایش به وسیله amin1softco : شنبه 14 فروردین 1389 در 20:20 عصر

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

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


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

    void Display(void)
    {
    glClear(GL_COLOR_BUFFER_BIT) ;
    int c=1,i,j ;
    glTranslatef(-0.8,-0.8,0);
    for(j=0;j<8;j++){
    for(i=0;i<8;i++)
    {
    c+=1;
    if(c%2==1)
    {
    glColor3f(0.0, 0.0, 0.0);
    }
    else
    {
    glColor3f(1.0, 1.0, 1.0);
    }

    glRectf (i*0.2,j*0.2,i*0.2+0.2,j*0.2+0.2) ;
    }
    c+=1;
    }
    glutSwapBuffers() ;
    }

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



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

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

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

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

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

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

    نمیکشه چرا ؟؟؟
    #include <iostream>
    #include <fstream>
    #include <windows.h>
    #include <GL/glut.h>
    using namespace std ;

    void display (void)
    {
    glClear(GL_COLOR_BUFFER_BIT) ;
    glColor3f(1.0, 1.0, 0.0);
    GLint xj, yj, j;
    fstream inStream ;
    inStream.open("horse.txt", ios ::in);
    if(!inStream) {
    cout << "File would not open\n";
    return;
    }
    glBegin(GL_LINE_LOOP);
    for (j=1 ; j<=16 ; j ++)
    {
    inStream >> xj >> yj ;
    cout << xj << " " << yj<<"\n" ;
    glVertex2i(xj,yj) ;
    }
    glEnd();
    glFlush();
    glutSwapBuffers() ;
    }
    int main(int argc, char **argv)
    {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
    glutInitWindowPosition(500,100);
    glutInitWindowSize(500,500);
    glutCreateWindow("horse");
    glClearColor(1.0,1.0,1.0,0.0);
    glLineWidth(5.0);
    glutDisplayFunc(display);
    glutMainLoop();
    return 0;
    }

    اینم نقطه هاش
    فایل های ضمیمه فایل های ضمیمه

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

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

    یادت رفته ماتریس پروجکشن رو ست کنی به صورت نرمال بر حسب 1 هست

    glMatrixMode(GL_PROJECTION); //projection parameters
    gluOrtho2D(0.0,75.0,0.0,75.0); //sets up WC extent

    نتیجه کارت اینه
    حالا چطوری بعد بهش بدیم و سه بعدیش کنیم

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

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

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

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

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

    برای اینکه داخلش رنگ بشه باید از

    glBegin(GL_QUADS)
    ya
    glBegin(GL_POLYGON)

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

  27. #107

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

    میتونید به جای GL_LINES یا GL_LINE_LOOP از GL_POLYGON استفاده بکنید.

    البته در این مورد یه دستور مفید هم به اسم glPolygonMode وجود داره که داری دو پارامتر هستش. پارامتر اول سطح رو مشخص میکنه (جلو یا عقب چند ضلعی) که میتونه مقادیر زیر رو بگیره:


    • GL_FRONT: سطح جلویی چند ضلعی
    • GL_BACK: سطح پشتی چند ضلعی
    • GL_FRONT_AND_BACK: سطح رو و پشت چند ضلعی

    و پارامتر دوم نوع رسم ورتکس ها و فضای مابین آنها رو مشخص میکنه. این پارامتر میتونه مقادیر زیر رو بگیره:

    • GL_POINT: به جای هر ورتکس یه نقطه میزاره (مثل GL_POINTS در دستور glBegin عمل میکنه.)
    • GL_LINE: ورتکس ها رو با خط بهم متصل می کنه (مثل GL_LINE_LOOP توی glBegin). اصطلاحا توی این حالت میگن شکل سیمی (wired) رسم شده.
    • GL_FILL: فضای داخل چند ضلعی رو پر میکنه.

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

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

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

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

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

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

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

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

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

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

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

    به نظر من یک طرح جدید باشه خیلی بهتره ... آدمو بیشتر جذب میکنه ، خلاقانه ترم هست

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

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

    دوستان من این اسب شطرنج رو نوشتم ...

    #include <windows.h>
    #include <stdlib.h>
    #include <ctime>
    #include <GL/glut.h>
    GLint i=0;
    int nrandom(int max)
    { srand(time(NULL));
    return rand() % max;
    }

    #define NMOVES 8
    #define BSIZE 8

    int moves[8][2] = { {2, 1}, {2, -1}, {1, 2}, {1, -2}, {-1, 2}, {-1,-2}, {-2, 1}, {-2, -1} };
    int board[BSIZE][BSIZE];
    int mpositionx = nrandom(BSIZE);
    int mpositiony = nrandom(BSIZE);
    int mmove_number = 2;
    int mmove[2];

    ///////////////////////




    int in_range_and_empty(int posx, int posy)
    {
    return (posx < BSIZE && posx >= 0 &&
    posy < BSIZE && posy >= 0 &&
    board[posx][posy] == 0);
    }

    int get_accessibility(int x, int y)
    {
    int accessibility = 0;
    int i;

    for (i = 0; i < NMOVES; i++)
    {
    if (in_range_and_empty(x + moves[i][0], y + moves[i][1]))
    accessibility += 1;
    }

    return accessibility;
    }

    void get_next_moves(int* move)
    {
    int positionx = move[0];
    int positiony = move[1];
    int accessibility = NMOVES;
    int i;

    for (i = 0; i < NMOVES; i++)
    {
    int newx = positionx + moves[i][0];
    int newy = positiony + moves[i][1];
    int newacc = get_accessibility(newx, newy);
    if (in_range_and_empty(newx, newy) && newacc < accessibility)
    {
    move[0] = newx;
    move[1] = newy;
    accessibility = newacc;
    }
    }
    }

    //////////////////////End of knight func

    void Board(GLfloat x,GLfloat y){
    int c=1,i , j ;
    for(j=0;j<8;j++){
    for(i=0;i<8;i++)
    {
    c+=1;
    if(c%2==1)
    {
    glColor3f(255*(1.00/255), 162*(1.00/255), 0*(1.00/255));
    }
    else
    {
    glColor3f(1.0, 1.0, 1.0);
    }

    glRectf (x+(i*21 ), y+(j*21 ) , x+(i*21)+20 , y+(j*21 )+20 ) ;
    }c+=1;}
    }

    ////////////////////End of Board

    void output(int x, int y, char *string)
    {
    int len, i;
    glRasterPos2f(x, y);
    len = (int) strlen(string);
    for (i = 0; i < len; i++)
    {

    glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24 , string[i]);
    }
    }
    ////////////////////End of output

    void horse(GLfloat x,GLfloat y){
    //glPushMatrix();
    glBegin(GL_LINE_LOOP);

    glVertex2f(x+10, y+1 );
    glVertex2f(x+20, y+15);
    glVertex2f(x+10, y+15);
    glVertex2f(x+15, y+50);
    glVertex2f(x+30, y+70);
    glVertex2f(x+33, y+70);
    glVertex2f(x+33, y+67);
    glVertex2f(x+40, y+60);
    glVertex2f(x+50, y+50);
    glVertex2f(x+40, y+40);
    glVertex2f(x+37, y+40);
    glVertex2f(x+35, y+45);
    glVertex2f(x+30, y+50);
    glVertex2f(x+50, y+10);
    glVertex2f(x+40, y+10);
    glVertex2f(x+50, y+1);
    glEnd();
    //glPopMatrix();
    }

    /////////////////////////End of horse

    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)
    {
    glPushMatrix();
    glClear(GL_COLOR_BUFFER_BIT); //clears display window
    Board(4.0,4.0);
    glScalef(0.3,0.28,0);
    for(int n=0;(n<8);n++)
    for(int m=0;(m<8);m++){
    if(board[n][m]){
    char a[5]="0";
    _itoa_s(board[n][m],a,10);
    glColor3f(50*(1.00/255), 118*(1.00/255), 152*(1.00/255));
    output((n*70)+15,(m*75)+17,a);
    //glColor3f(0.0, 0.5, 0.5);
    //horse((n*70)+15,(m*75)+15);
    }};
    if(i<64){
    i++;
    mmove[0] = mpositionx;
    mmove[1] = mpositiony;
    get_next_moves(mmove);
    }

    mpositionx = mmove[0];
    mpositiony = mmove[1];
    board[mpositionx][mpositiony] = mmove_number;

    glColor3f(0.0, 1.0, 1.0);
    horse((mpositionx*70)+15,(mpositiony*75)+15);
    glColor3f(124*(1.00/255), 0*(1.00/255), 124*(1.00/255));
    char a[5]="0";
    _itoa_s(mmove_number,a,10);
    output((mpositionx*70)+15,(mpositiony*75)+17,a);
    if (i<63)mmove_number += 1;
    Sleep(1000);

    glFlush();
    glPopMatrix();
    glutSwapBuffers();
    }

    int main(int argc, char** argv)
    {
    for(int n=0;(n<8);n++)
    for(int m=0;(m<8);m++)
    board[n][m]=0;
    mpositionx = nrandom(BSIZE);
    mpositiony = nrandom(BSIZE);
    board[mpositionx][mpositiony] = 1; // first move

    glutInit(&argc, argv); //initialise GLUT
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); //sets display mode
    glutInitWindowPosition(50, 100); //top left display window pos
    glutInitWindowSize(500, 500); //display win width and height in pixel coords
    glutCreateWindow("Knight 01"); //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,175.0,0.0,175.0); //sets up WC extent
    glutDisplayFunc(dis); //call drawing func
    glutIdleFunc(dis);
    glutMainLoop(); //display all and wait
    return 0;
    }



    برنامه بعدی یک ساعت دیواری که ساعت ویندوز را نمایش بده؟؟!؟! یا می تونیم یک چیزی شبیه انیمیشن ها انتظار اول وبلاگ ها که یک دایره است و یک سری خط ایجاد کنیم؟
    عکس های ضمیمه عکس های ضمیمه
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله amin1softco : سه شنبه 17 فروردین 1389 در 18:05 عصر

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

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

    یه توضیحی در مورد ایت زیریا بده لطفا :

    stdlib
    ctime
    srand
    rand

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

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

    stdlib برای تبدیل عدد به رشته ازش استفاده شده
    ctime برای time(NULL)
    srand برای تعیین هسته تابع راندوم
    rand برای محاسبه اولین خانه تصادفی ازش استفاده شده

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

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

    time(null) چه کارمیکنه ؟

    sleep چیه قضیه اش ؟

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

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

    نقل قول نوشته شده توسط zuck_619 مشاهده تاپیک
    time(null) چه کارمیکنه ؟

    sleep چیه قضیه اش ؟
    time(null) برای اینه که برنامه با اجرا های متفاوت خانه های متفاوتی رو انتخاب کنه و کلا اینا زیاد مهم نیست فقط یک خانه اولیه تصادفی ایجاد می کنند برای شروع حرکت اسب

    sleep برای اینه ایجاد حالت نمایشه چون ممکنه تابع dis خیلی زود به زود فراخوانی بشه این کنترل می کنه که در 7 دهم ثانیه تا اجرای بعدی صبر کنه.....

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

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

    من تو نوشتن ساعت یه مشکل دارم :
    چطوری میشه ساعت سیستم رو خوند و ازش استفاده کرد ؟
    فکر کنم با
    getitmer
    یا
    gettimeofday
    ولی نمیدونم چطوری میشه ازش استفاده کرد ؟

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

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

    نقل قول نوشته شده توسط zuck_619 مشاهده تاپیک
    من تو نوشتن ساعت یه مشکل دارم :
    چطوری میشه ساعت سیستم رو خوند و ازش استفاده کرد ؟
    فکر کنم با
    getitmer
    یا
    gettimeofday
    ولی نمیدونم چطوری میشه ازش استفاده کرد ؟
    فقط به همین قطعه کد نیاز داری ساعت و دقیقه ثانیه

    #include <time.h>
    #include <stdlib.h>
    void main(){
    struct tm *time_now;
    time_t secs_now;
    int s,m,h;
    tzset();
    time(&secs_now);
    time_now = localtime(&secs_now);
    strftime(str, 3,"%H",time_now);
    h=atoi(str);
    strftime(str, 3,"%M",time_now);
    m=atoi(str);
    strftime(str, 3,"%S",time_now);
    s=atoi(str);

    sprintf(key,"%d:%d:%d",h,m,s);
    }

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

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

    یکم توضیح در مورد این کد میدی ؟ struct و tzset

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

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

    نقل قول نوشته شده توسط zuck_619 مشاهده تاپیک
    یکم توضیح در مورد این کد میدی ؟ struct و tzset
    ببین اینا مربوط به سی هستش و اصلا خودتو با اینها در گیر نکن اما struct حکم کلاس خودمون رو داره و اون تابع tzset برای ست کردن ساعت گرینویچ به ساعت محلی هستش....

    #include <time.h>
    #include <stdlib.h>
    #include <stdio.h>
    void main(){
    struct tm *time_now;
    time_t secs_now;
    int s,m,h;
    char str[2];
    tzset(); //تبديل ساعت گرينويچ به ساعت محلي
    time(&secs_now);
    time_now = localtime(&secs_now);
    strftime(str, 3,"%H",time_now);
    h=atoi(str);
    strftime(str, 3,"%M",time_now);
    m=atoi(str);
    strftime(str, 3,"%S",time_now);
    s=atoi(str);
    printf("%d:%d:%d",h,m,s);
    }

صفحه 3 از 10 اولاول 12345 ... آخرآخر

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

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

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