نمایش نتایج 1 تا 2 از 2

نام تاپیک: یک مشکل در رسم چند ضلعی به وسیله open gl

  1. #1

    Question یک مشکل در رسم چند ضلعی به وسیله open gl

    من وقتی با glBegin چند ضلعی میکشم اگر توی خود برنامه به glVertex ها عدد بدم(چه مستقیم بگم 0.2 و 0.3 چه یه متغییر تعریف کنم و بهش مقدار اولیه بدم) درست کار میکنه ولی اگه بخوام از کاربر بگیرم موقع run هنگ میکنه و error میده.هر چی هم تو منابع نگاه میکنم ندیدم که از کابر مختصات رئوس رو بگیرن...
    مشکل کجاست؟؟؟

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

    نقل قول: یک مشکل در رسم چند ضلعی به وسیله open gl

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


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

    void output(int x, int y, char *string)
    {
    int len, i;
    glRasterPos2i(x, y);
    len = (int) strlen(string);
    for (i = 0; i < len; i++)
    {
    glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, string[i]);
    }
    }
    void line_draw(int x, int y, int xs, int ys)
    {
    glColor3f((rand()%100)/0.10, 0.100,(rand()%100)/0.10); //line colour set to blue
    glBegin(GL_LINES);
    glVertex2i(x,y); glVertex2i(xs,ys); //line seg1
    glEnd();
    }
    void init(void)
    {
    glClearColor(1.0,1.0,1.0,0.0);
    glMatrixMode(GL_PROJECTION);
    gluOrtho2D(0.0,200.0,0.0,150.0);
    }
    int nux=0;
    int xx=10;
    int yy=100;
    char a[100],aa[15];

    void lineSegments(void)
    {
    glClear(GL_COLOR_BUFFER_BIT); //clears display window ??? ???? ???? ?????

    line_draw(10,10, 10, 100);
    output(xx,yy,"for get line plz press enter :");


    glFlush(); //process all OGL functions immediately ???? ?? ???? ????
    }
    int k=0;
    int x1=0,y3=0,x2=0,y2=0;
    void keyboard(unsigned char key, int x, int y)
    {
    if( key == 13 )
    {
    if ( nux<=4 ){
    switch (nux)
    {
    case 1: x1=k;k=0;
    break;
    case 2: y3=k;k=0;
    break;
    case 3: x2=k;k=0;
    break;
    case 4: y2=k;k=0;nux++;
    break;
    default: ;
    }
    if (nux < 4){

    yy=yy-8;
    xx=10;
    a[0]='\0';
    if ( (nux % 2) == 0) strcat(a,"x") ; else strcat(a,"y") ;
    itoa(nux++,aa,10);strcat(a,aa);strcat(a,":");
    output(xx,yy,(char *)a);
    xx=18;
    }}

    if (nux>4) {

    glClear(GL_COLOR_BUFFER_BIT);
    output(1,1,"ok");
    line_draw( x1, y3, x2, y2);
    glFlush();
    }
    }else{
    k*=10;
    k+=(int)key-48;
    }
    glRasterPos2i(xx, yy);
    glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, key);
    xx=xx+6;

    if( key == 27)
    exit(0);
    }
    int main(int argc, char** argv)
    {
    glutInit(&argc, argv); //initialise GLUT
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowPosition(50, 100); //top left display window pos
    glutInitWindowSize(400, 300); //display win width and height in pixel coords
    glutCreateWindow("line"); //now create display win
    init(); //run initilization procs
    glutDisplayFunc(lineSegments); //call drawing func
    glutKeyboardFunc(keyboard);
    glutMainLoop(); //display all and wait
    return 0;
    }

    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله amin1softco : شنبه 08 بهمن 1390 در 20:53 عصر

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

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