OpenGL là gì? OpenGL có tác dụng gì?

OpenGL là gì?

Theo định nghĩa tin học, OpenGL (Open Graphics Library) là một tiêu chuẩn kỹ thuật đồ họa được hình thành với mục đích định ra một giao diện lập trình ứng dụng (API) theo không gian 3 chiều. Trước khi OpenGL xuất hiện, bất cứ công ty nào muốn phát triển một ứng dụng đồ họa thường phải viết lại phần đồ họa của nó cho phù hơp với mỗi nền tảng hệ điều hành cũng như phần cứng đồ họa. Với OpenGL, một ứng dụng có thể tạo ra các hiệu ứng tương tự trong bất kỳ hệ điều hành nào sử dụng các bộ điều hợp đồ họa của OpenGL. Có thể nói, OpenGL giống như một ngôn ngữ đồ họa độc lập và có khả năng tương thích với mọi nền tảng, mọi kiểu máy tính, thậm chí cả trên những máy tính không hỗ trợ đồ họa cao cấp.

OpenGL chỉ định một tập hợp các "lệnh" hoặc các hàm phải được thực thi ngay lập tức. Trong đó mỗi lệnh phụ trách một hành động vẽ hoặc tạo ra các hiệu ứng đặc biệt nào đó. Một danh sách các lệnh như vậy có thể được tạo ra để tạo các hiệu ứng lặp đi lặp lại OpenGL độc lập với các đặc tính của mỗi hệ điều hành, nhưng cung cấp các quy trình "glue" đặc biệt cho mỗi hệ điều hành, điều này cho phép OpenGL hoạt động được trong môi trường của hệ thống đó.

Sơ đồ OpenGL

OpenGL chứa đựng một số lượng lớn các tính năng tích hợp được chỉ định và yêu cầu thông qua API, bao gồm loại bỏ bề mặt ẩn, trộn alpha, chống hiệu ứng răng cưa, làm mịn, tính toán pixel, theo dõi và biến đổi các mô hình, và các hiệu ứng về không khí (sương mù, khói và khói mù).

Silicon Graphics, nhà sản xuất máy trạm đồ họa tiên tiến thế giới, là đơn vị đi tiên phong trong việc phát triển OpenGL. Theo sau là các công ty khác trong Architecture Review Board bao gồm DEC, Intel, IBM, Microsoft và Sun Microsystems. Không tốn bất cứ chi phí nào (ngoài việc học) cho việc phát triển một ứng dụng sử dụng API OpenGL. Ngoài ra Microsoft cung cấp các thư viện OpenGL cho phép người dùng tải miễn phí trên các hệ thống Windows của hãng.

Tác dụng của OpenGL

Tóm lại, OpenGL được thiết kế nhằm thỏa mãn mục đích chính sau:

- Đơn giản hóa việc tương tác giữa các mô hình không gian 3 chiều bằng một giao diện lập trình thống nhất.

- Hỗ trợ tối đa các chức năng của giao diện OpenGL bằng cách ép buộc các phần cứng 3 chiều khác nhau phải tương thích. Ngay cả khi không thể ép phần cứng hỗ trợ hoàn toàn, OpenGL có thể yêu cầu hệ thống sử dụng thêm sức mạnh phần mềm để xử lý.

- Tiêu chuẩn OpenGL nhận các nguyên hàm hình học như điểm, đường thẳng và đa giác rồi chuyển thành các điểm đồ họa (pixel) trên màn hình. Quá trình này được thực hiện thông qua luồng ống dẫn đồ họa (thuật ngữ graphics pipeline). Một tên gọi khác của OpenGL cũng được giới kỹ thuật chia sẻ đó là bộ máy trạng thái OpenGL.

Cách cài đặt OpenGL

Cài đặt OpenGL trên Ubuntu

Để cài đặt OpenGL trên Ubuntu, chỉ cần thực thi lệnh sau (giống như cài đặt bất kỳ thứ nào khác) trong Terminal:

sudo apt-get install freeglut3-dev

Để làm việc trên hệ điều hành Ubuntu:

gcc filename.c -lGL -lGLU -lglut 
where filename.c is the name of the file
with which this program is saved.

Cài đặt OpenGL trên Windows trong Code::Blocks

1. Tải xuống code block và cài đặt nó.

2. Truy cập liên kết này và tải xuống file Zip từ liên kết tải xuống xuất hiện sau gói Freeglut MinGW, có tên liên kết là Download freeglut 3.0.0 for MinGW và giải nén nó.

3. Mở Notepad với quyền admin và mở file từ:

  • This PC > C: (ổ C) > Program Files(x86) > CodeBlocks > share > CodeBlocks > templates, sau đó nhấp vào All Files để hiển thị tất cả file.
  • Tiếp theo, mở glut.cbp và tìm kiếm tất cả glut32 và thay thế bằng freeglut.
  • Sau đó, mở This PC > C: (ổ C) > Program Files(x86) > CodeBlocks > share > CodeBlocks > Templates > Wizard > glut, sau đó nhấp vào All Files để hiển thị tất cả các file.
  • Mở wizard.script và tại đây, cũng thay thế tất cả glut32 bằng freeglut.

4. Sau đó, chuyển đến thư mục freeglut (nơi nó đã được tải xuống) và:

  • Include > GL, rồi sao chép tất cả 4 file từ đó
  • Đi tới This PC > C: (ổ C) > Program Files (x86) > CodeBlocks > MinGW > include > GL và dán nó vào.
  • Sau đó, từ thư mục tải xuống freeglut > lib, sao chép 2 file và đi tới This PC > C: (ổ C) > Program Files (x86) > CodeBlocks > MinGW > lib và dán nó.
  • Một lần nữa, vào thư mục đã tải xuống freeglut > bin và sao chép file (freeglut.dll) từ đây và đi tới This PC > C: (ổ C) > Windows > SysWOW64 và dán file này.

5. Bây giờ hãy mở Code::Blocks.

  • Chọn File > New > Project > GLUT project > Next.
  • Đặt tiêu đề cho project rồi chọn Next.
  • Để chọn vị trí của GLUT: This PC > C: (ổ C) > Program Files(x86) > CodeBlocks > MinGW.
  • Nhấn OK > Next > Finish.

Bây giờ, Code::Blocks đã sẵn sàng để kiểm tra OpenGL File.

Kiểm tra hoạt động với OpenGL

Để cho thấy OpenGL hoạt động như thế nào, một chương trình vẽ hình tròn đơn giản được thêm vào trong C bằng cách sử dụng nền tảng OpenGL.

// C program to demonstrate
// drawing a circle using
// OpenGL
#include<stdio.h>
#include<GL/glut.h>
#include<math.h>
#define pi 3.142857
 
// function to initialize
void myInit (void)
{
    // making background color black as first
    // 3 arguments all are 0.0
    glClearColor(0.0, 0.0, 0.0, 1.0);
     
    // making picture color green (in RGB mode), as middle argument is 1.0
    glColor3f(0.0, 1.0, 0.0);
     
    // breadth of picture boundary is 1 pixel
    glPointSize(1.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
     
    // setting window dimension in X- and Y- direction
    gluOrtho2D(-780, 780, -420, 420);
}
 
void display (void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_POINTS);
    float x, y, i;
     
    // iterate y up to 2*pi, i.e., 360 degree
    // with small increment in angle as
    // glVertex2i just draws a point on specified co-ordinate
    for ( i = 0; i < (2 * pi); i += 0.001)
    {
        // let 200 is radius of circle and as,
        // circle is defined as x=r*cos(i) and y=r*sin(i)
        x = 200 * cos(i);
        y = 200 * sin(i);
         
        glVertex2i(x, y);
    }
    glEnd();
    glFlush();
}
 
int main (int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
     
    // giving window size in X- and Y- direction
    glutInitWindowSize(1366, 768);
    glutInitWindowPosition(0, 0);
     
    // Giving name to window
    glutCreateWindow("Circle Drawing");
    myInit();
     
    glutDisplayFunc(display);
    glutMainLoop();
}

Biên dịch chương trình trên trong Ubuntu:

gcc filename.c -lGL -lGLU -lglut -lm 
where filename.c is the name of the file
with which this program is saved.

Đầu ra của chương trình trên được hiển thị trong ảnh chụp màn hình bên dưới:

Đầu ra của chương trình mẫu
Đầu ra của chương trình mẫu

Xem thêm:

Thứ Tư, 22/08/2018 11:33
3,17 👨 34.981
0 Bình luận
Sắp xếp theo
    ❖ Kiến thức cơ bản