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

نام تاپیک: برنامه نویسی با openGL

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1395
    محل زندگی
    تهران
    پست
    34

    برنامه نویسی با openGL

    salam....torokhoda komak konid:( chejuri tu opengl aks load konam!rastesh bade koli searcho ina fahmidam khode openGl abzari baraye load aks nadare...va behtarin library in kar DevIL ast...ham noskheye linus va ham windows 65bitesho dl kardam va ham dar visual studio va ham dar eclipse add kardam...vali tu visual ke mizane not resolved...unam tu eclipseam asan nemidunam tuye linker ha che chizayi gharar migire ....va az koja mian?age kesi az DevIL estefade karde lotfan komak kone ...aya rah dige khobi baraye load texture soragh darid?

  2. #2

    نقل قول: برنامه نویسی با openGL

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

    برای مثال تابع زیر را در نظر بگیرید :



    GLuint LoadTexture()
    {
    GLuint texID;
    AUX_RGBImageRec * image;

    image = auxDIBImageLoad(L"crate.bmp");

    glGenTextures(1, &texID);
    glBindTexture(GL_TEXTURE_2D, texID);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR);
    gluBuild2DMipmaps(GL_TEXTURE_2D, 3, image->sizeX, image->sizeY, GL_RGB, GL_UNSIGNED_BYTE, image->data);
    return texID;
    }




    تابع فوق یک عکس رو لود می کنه و بر میگردونه ، حالا توی تابع آپدیت باید یک مربع یا مکعب رسم کنید و تکسچر رو روش بندازین ، در خط ابتدایی تابع زیر ، تکسچر را توسط تابع قبلی لود می کنیم و بعد از آن روی مدل می اندازیم : (مدل در کد زیر مکعب است )


    void update()
    {
    tex = LoadTexture();
    float theta = GetTickCount() / 10.0f;
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();
    glRotatef(theta, 1, 1, 0);
    glBindTexture(GL_TEXTURE_2D, tex);

    glColor3f(1.0f, 0.0f, 0.0f);
    glBegin(GL_POLYGON);

    glNormal3f(0, 0, 1);
    glTexCoord2f(0, 0);
    glVertex3f(-1, -1, 1.0f);

    glNormal3f(0, 0, 1);
    glTexCoord2f(1, 0);
    glVertex3f(1, -1, 1.0f);

    glNormal3f(0, 0, 1);
    glTexCoord2f(1, 1);
    glVertex3f(1, 1, 1.0f);

    glNormal3f(0, 0, 1);
    glTexCoord2f(0, 1);
    glVertex3f(-1, 1, 1.0f);


    glEnd();

    glBegin(GL_POLYGON);

    glNormal3f(0, 0, -1);
    glTexCoord2f(0, 0);
    glVertex3f(-1, -1, -1.0f);

    glNormal3f(0, 0, -1);
    glTexCoord2f(1, 0);
    glVertex3f(1, -1, -1.0f);

    glNormal3f(0, 0, -1);
    glTexCoord2f(1, 1);
    glVertex3f(1, 1, -1.0f);

    glNormal3f(0, 0, -1);
    glTexCoord2f(0, 1);
    glVertex3f(-1, 1, -1.0f);

    glEnd();

    glBegin(GL_POLYGON);

    glNormal3f(-1, 0, 0);
    glTexCoord2f(0, 0);
    glVertex3f(-1, -1, -1.0f);

    glNormal3f(-1, 0, 0);
    glTexCoord2f(1, 0);
    glVertex3f(-1, -1, 1.0f);

    glNormal3f(-1, 0, 0);
    glTexCoord2f(1, 1);
    glVertex3f(-1, 1, 1.0f);

    glNormal3f(-1, 0, 0);
    glTexCoord2f(0, 1);
    glVertex3f(-1, 1, -1.0f);

    glEnd();

    glBegin(GL_POLYGON);

    glNormal3f(1, 0, 0);
    glTexCoord2f(0, 0);
    glVertex3f(1, -1, -1.0f);

    glNormal3f(1, 0, 0);
    glTexCoord2f(1, 0);
    glVertex3f(1, -1, 1.0f);

    glNormal3f(1, 0, 0);
    glTexCoord2f(1, 1);
    glVertex3f(1, 1, 1.0f);

    glNormal3f(1, 0, 0);
    glTexCoord2f(0, 1);
    glVertex3f(1, 1, -1.0f);

    glEnd();

    glBegin(GL_POLYGON);

    glNormal3f(0, 1, 0);
    glTexCoord2f(0, 0);
    glVertex3f(-1, 1, 1.0f);

    glNormal3f(0, 1, 0);
    glTexCoord2f(1, 0);
    glVertex3f(-1, 1, -1.0f);

    glNormal3f(0, 1, 0);
    glTexCoord2f(1, 1);
    glVertex3f(1, 1, -1.0f);

    glNormal3f(0, 1, 0);
    glTexCoord2f(0, 1);
    glVertex3f(1, 1, 1.0f);

    glEnd();

    glBegin(GL_POLYGON);
    glNormal3f(0, -1, 0);
    glTexCoord2f(0, 0);
    glVertex3f(-1, -1, 1.0f);

    glNormal3f(0, -1, 0);
    glTexCoord2f(1, 0);
    glVertex3f(-1, -1, -1.0f);

    glNormal3f(0, -1, 0);
    glTexCoord2f(1, 1);
    glVertex3f(1, -1, -1.0f);

    glNormal3f(0, -1, 0);
    glTexCoord2f(0, 1);
    glVertex3f(1, -1, 1.0f);
    glEnd();

    glutSwapBuffers();

    }


    تابع init هم برای تنظیم کردن نور و ماتریال به صورت زیر است :


    void init(void)
    {
    glClearColor(1.0, 1.0, 1.0, 1.0);
    GLfloat light_position[] = { 0.0f, 0.0f, 4.0f, 0.0f };
    GLfloat light_diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };

    GLfloat material_diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };
    GLfloat material_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
    GLfloat material_shininess[] = { 15.0f };

    glEnable(GL_DEPTH_TEST);
    glShadeModel(GL_SMOOTH);

    glLightfv(GL_LIGHT0, GL_POSITION, light_position);
    glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);

    glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, material_diffuse);
    glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, material_specular);
    glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, material_shininess);


    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    glEnable(GL_DEPTH_TEST);



    glEnable(GL_TEXTURE_2D);






    glEnable(GL_DEPTH_TEST);
    glShadeModel(GL_SMOOTH);
    }


    و در آخر هم به صورت زیر تابع اصلی را می نویسیم :


    int main(int argc, char** argv)
    {

    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize(500, 500);
    glutInitWindowPosition(100, 100);
    glutCreateWindow(argv[0]);
    init();
    //glutMouseFunc(picking);
    glutReshapeFunc(reshape);
    glutDisplayFunc(update);
    glutIdleFunc(update);
    //glutKeyboardFunc(keyInput);

    glutKeyboardFunc(keyInput);
    //glutSpecialFunc(specialKeyInput);
    glutMainLoop();
    return 0;
    }




    توابع فوق با کتابخانه glut پیاده سازی شده اند.

  3. #3
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1395
    محل زندگی
    تهران
    پست
    34

    نقل قول: برنامه نویسی با openGL

    bebakhshid vali mizane undeclared indentifier man glut ro ham include kardam va azashash estefade kardam.baraye estefade az in tabe ha bayad ketabkhuneye dige ie ro ham include konam? :)s
    as.PNG

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

    نقل قول: برنامه نویسی با openGL

    نقل قول نوشته شده توسط smokyshadow مشاهده تاپیک
    salam....torokhoda komak konid:( chejuri tu opengl aks load konam!rastesh bade koli searcho ina fahmidam khode openGl abzari baraye load aks nadare...va behtarin library in kar DevIL ast...ham noskheye linus va ham windows 65bitesho dl kardam va ham dar visual studio va ham dar eclipse add kardam...vali tu visual ke mizane not resolved...unam tu eclipseam asan nemidunam tuye linker ha che chizayi gharar migire ....va az koja mian?age kesi az DevIL estefade karde lotfan komak kone ...aya rah dige khobi baraye load texture soragh darid?
    yani hichki tahala ba opengl aks load nakarde?!

  5. #5

    نقل قول: برنامه نویسی با openGL

    سلام
    اگر تو از AuX استفاده می کنی
    AUX فقط پسوند .bmp استفاده می کند

تاپیک های مشابه

  1. سوال: برنامه نویسی با opengl
    نوشته شده توسط moh.mon در بخش برنامه نویسی با Borland C++‎ Builder
    پاسخ: 5
    آخرین پست: یک شنبه 08 فروردین 1389, 20:03 عصر
  2. معرفی برنامه نویسی با ظاهر گرافیکی با پرل
    نوشته شده توسط white fox در بخش دیگر زبان های اسکریپتی
    پاسخ: 6
    آخرین پست: جمعه 21 مهر 1385, 11:40 صبح
  3. نحوه طراحی مفسر ربان های برنامه نویسی با سی
    نوشته شده توسط Pars Giga در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 6
    آخرین پست: جمعه 13 خرداد 1384, 14:03 عصر
  4. برنامه نویسی با vb را ادامه دهیم یا به vb.net برویم
    نوشته شده توسط wall0002 در بخش برنامه نویسی در 6 VB
    پاسخ: 17
    آخرین پست: شنبه 11 مهر 1383, 11:16 صبح
  5. برنامه نویسی با استفاده از امکانات فارسی ویندوز، بله یا نه؟؟
    نوشته شده توسط مهدی کرامتی در بخش برنامه نویسی در Delphi
    پاسخ: 14
    آخرین پست: دوشنبه 24 شهریور 1382, 15:19 عصر

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

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