Apr 7, 2012

Hướng dẫn cài đặt OpenGL.

Sau đây là hướng dẫn cài đặt OpenGL (Open Graphic Library) trên các phiên bản Visual Studio. Mặc dù OpenGL đã được cài đặt sẵn trên các driver đồ họa, tuy nhiên nếu không thiết lập và cài đặt thư viện Glut mới sử dụng các hàm này được.
0. Sự khác nhau về OpenGL và Glut:
  • OpenGL là thư viện đồ họa gồm các API về thuật toán vẽ hình, các phép biến đổi, phép chiếu của thực thể.
  • GLUT là thư viện quản lí cửa sổ, các thao tác nhập xuất như bàn phím, chuột, menu đơn. Cũng như các API liên quan tới việc giao tiếp của người dùng với OpenGL.
Và như vậy GLUT như 1 trung gian giữa end-user và thư viện OpenGL. Thông qua các sự kiện của người dùng, GLUT sẽ "catch" - tức bắt các sự kiện đó, phân tích rồi thực hiện theo cài đặt. Và OpenGL sẽ thực thi các lệnh vẽ, thông qua GLUT sẽ trả về kết quả trên màn hình.
1. Tải GLUT tại đây.
2. Giải nén. Trong đó có 3 file cần lưu tâm:
“glut32.dll” Chép vào thư mục C:\Windows\System32. (Nếu cẩn thận thì nên copy sang thư mục khác nữa là :C:\Windows\SysWOW64 )
“glut.h” Chép vào thư mục include của Visual C++.
  • Với phiên bản 2012: Chép vào: C:\Program Files\Microsoft Visual Studio 11.0\VC\include. Đối với bản 2012: thư mục gl không còn tồn tại nữa, thực tế các header file liên quan đến OpenGL đã được đưa đến nơi khác. Thư mục đó vẫn có tên là gl. Vì vậy đối với bản 2012. Khi lập trình ta cần include như sau:

    #include <glut.h>
    #include <gl/gl.h>
    #include <gl/glu.h>
    
  • Với phiên bản 2010: Chép vào: C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\gl.
  • Với phiên bản 2008: Chép vào: C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\gl.
  • Với phiên bản 2005: Chép vào: C:\Program Files\Microsoft Visual Studio.NET\Vc7\PlatformSDK\Include\gl
“glut32.lib” Chép vào thư mục library:
  • Với phiên bản 2012: C:\Program Files\Microsoft Visual Studio 11.0\VC\lib
  • Với phiên bản Visual Studio 2010: C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib
  • Với phiên bản Visual Studio 2008: C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib
  • Với phiên bản Visual Studio 2005: C:\Program Files\Microsoft Visual Studio.NET\Vc7\PlatformSDK\lib.
3. Thiết lập cho project Visual Studio.

  • Tạo một empty project Win32 console application.
  • Click chuột phải vào dự án ở Solution Explorer, chọn Properties. Phần Linker, mục Additional Dependence nhập các file sau:
    glut32.lib 
    glu32.lib 
    opengl32.lib
    
  • Phần VC++ Directories, chọn mục Include Directories click edit vào trỏ đến đường dẫn tương ứng cho thư mục include ở phần trên. Làm tương tự với Library Directories.
4. Thứ tự include vào file cpp theo thứ tự sau:

#include <GL/glut.h>
#include <GL/gl.h>
#include <GL/glu.h>

5.Lưu ý: Khi include các thư viện stdio.h, stdlib.h thì phải include các file này trước, sau đó mới include các header file của GLUT

30 comments:

  1. bạn ơi cho tôi hỏi ... tại sao không thể copy file glut.dll vào system32 or syswow64 được .... bạn có thể giúp tôi được ko

    ReplyDelete
    Replies
    1. Lạ nhỉ? Chỉ cần copy và paste vô 2 thư mục đó thôi mà. Hay là bị lỗi permission dinied nhỉ?

      Delete
  2. a ơi sao linker của e ko có mục Additional Dependence vậy

    ReplyDelete
    Replies
    1. Linker -> Input -> Additional Dependence

      Delete
  3. anh ơi có cần cái glaux.lib không nhỉ?

    ReplyDelete
    Replies
    1. Không đâu bạn, nếu đã dùng glut thì không cần dùng glaux.lib :)

      Delete
  4. Chào anh! em muốn cài thư viện này vào turbo c thì phải làm thế nào? em có đoạn code vẽ đường thẳng khi chạy nó báo lỗi ở thư viện gl/gl.h anh giúp em với!

    ReplyDelete
    Replies
    1. Bạn có thể cho mình biết turbo C báo lỗi gì không?

      Delete
  5. ah mình bỏ Turbo C rồi mình qua sử dụng Devc rồi. Ah mình có bài tập về đồ họa nhưng chạy báo lỗi bạn xem giùm mình với http://www.mediafire.com/?57j3dm6d5jm4go5

    ReplyDelete
    Replies
    1. Bến OpenGL mình mới chỉ làm việc với fw Glut và freeglut, còn với môi trường graphic của devC mình chưa tìm hiểu, bạn thông cảm nghen :).

      Delete
  6. Anonymous21/9/12 12:33

    A cho e hỏi mục 3 config cho VS là làm mỗi khi mình tạo pj mới hả a?

    ReplyDelete
    Replies
    1. Ừa, mỗi lần tạo 1 project thì config lại :)

      Delete
  7. This comment has been removed by the author.

    ReplyDelete
  8. Xài win 8 thì 2 file “glut.h” và
    “glut32.lib" bỏ vào đâu đc ạ

    ReplyDelete
    Replies
    1. Phiên bản Windows không ảnh hưởng đến cấu hình, chỉ có phiên bản IDE thì khác thôi. Nếu bạn đang dùng VS 2012 thì có lẽ giống VS 2010. Mình chưa thử trên IDE mới này, khi nào test xong mình sẽ edit lại.
      Thân.
      P/s: Nghe tên khá quen, có phải bạn học bên HCMUS.FIT không? K11 hả?

      Delete
    2. A mình biết bạn rồi, giờ mới xem about ... hi..
      mình ko tìm tháy thư mục include và lib như đường dẫn, mình xai VS2012
      Bạn học chuyên ngành TGMT phải không

      Delete
    3. Đã update về bản 2012.

      Delete
  9. sao minh khong tim thay Linker nhi

    ReplyDelete
  10. bạn hướng dan rõ hơn phần VC++ Directories, làm thế nào trỏ đến đường dẫn tương ứng cho thư mục include

    ReplyDelete
  11. click vô dấu ... để thêm vào, 1 hộp thoại hiện ra và bạn trỏ nó đến thư mục mới vừa chép file header vô là xong. Thực ra bước này cũng ko cần lắm nếu bạn chép trực tiếp trong thư mục Project, hoặc trong default header file của VC++ :)

    ReplyDelete
  12. Nguyen Huu Tri13/9/13 14:49

    cho mình hỏi chút
    Mình vẽ bất cứ hình gì cũng không ra, chỉ ra màng hình trắng thôi, VS 2010 cũng không có báo lỗi
    Thanks!

    ReplyDelete
  13. Bạn có thể đưa source code mình xem không? Vì bạn mô tả chung chung nên mình chưa rõ là bị lỗi gì :)

    ReplyDelete
  14. Nguyen Huu Tri13/9/13 16:33

    #include
    #include

    int width = 800, height = 600;

    void Init(void)
    {
    // Thiet lap mau nen
    glClearColor(1.0f, 1.0f, 1.0f, 1.0f);

    // Thiet lap phep chieu
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(-width/2,width/2,-height/2,height/2);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    return;
    }

    void VeDuongThang(void)
    {
    glColor3f(1,0,0);
    glPointSize(5);
    glBegin(GL_LINES);
    glVertex2i(100,100);
    glVertex2i(150,150);
    glEnd();
    return;
    }


    void ComputersGraphics(void)
    {
    glClear(GL_COLOR_BUFFER_BIT);

    VeDuongThang();

    glFlush();
    return;
    }

    int main(int argc, char* argv[])
    {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowPosition(10,10);
    glutInitWindowSize(width,height);
    glutCreateWindow("Computers Graphics With OpenGL");
    Init();
    glutDisplayFunc(ComputersGraphics);
    glutMainLoop();
    return 0;
    }



    không vẽ được đường thẳng chỉ hiện ra màn hình trắng
    Đây là kết quả
    http://i6.upanh.com/2013/0913/09/57478704.untitled.120x1.jpg

    ReplyDelete
  15. Chào bạn, không hiểu sao code của bạn mình chạy ngon lành. Bạn nhớ include các header file theo thứ tức glut.h > gl.h > glu.h
    link ảnh: http://i.imgur.com/gVpBFrc.png

    ReplyDelete
  16. anh ơi! cho em hỏi muốn cài để viết chương trình Android thông qua Eclipse thì cài OpenGL này thế nào vậy anh?

    ReplyDelete
  17. Chào bạn, mình sẽ sớm post bài hướng dẫn về chủ đề bạn đề cập :)

    ReplyDelete
  18. bạn có thển dùng teamviea cài cho mình đc k? :))

    ReplyDelete
  19. Bạn cứ nêu vấn đề, mình sẽ thử post solution xem :)

    ReplyDelete
  20. ban co te chj cho mjh bk ro cach cai opengl 3.0 dc o

    ReplyDelete