Cấu trúc PIXELFORMATDESCRIPTER

Một phần của tài liệu đồ án kỹ thuật cơ khí Mô phỏng quá trình gia công CNC trên máy DENFORD (Trang 34)

Chương IV Giới thiệu về OPenGL

4.3.2. Cấu trúc PIXELFORMATDESCRIPTER

Mỗi một thiết bị thể hiện của OpenGL hỗ trợ một số hữu hạn các định dạng điểm ảnh. Tất nhiên tính sẵn có của định dạng điểm ảnh phụ thuộc và khả năng của thiết bị thể hiện. Các thuộc tính của một định dạng điểm ảnh cụ thể được biểu diễn thông qua cấu trúc PIXELFORMATDESCRIPTER. Cấu trúc này lưu trữ 26 trường thông tin.

typedef struct tagPIXELFORMATDESCRIPTOR { WORD nSize; WORD nVersion; DWORD dwFlags; BYTE iPixelType; BYTE cColorBits; BYTE cRedBits; BYTE cRedShift; BYTE cGreenBits; BYTE cGreenShift; BYTE cBlueBits; BYTE cBlueShift; BYTE cAlphaBits; BYTE cAlphaShift; BYTE cAccumBits; BYTE cAccumRedBits; BYTE cAccumGreenBits; BYTE cAccumBlueBits; BYTE cAccumAlphaBits; BYTE cDepthBits; BYTE cStencilBits; BYTE cAuxBuffers; BYTE iLayerType; BYTE bReserved; DWORD dwLayerMask; DWORD dwVisibleMask; DWORD dwDamageMask; } PIXELFORMATDESCRIPTOR;

Bảng 4.2. Các thành phần của cấu trúc PIXELFORMATDESCRIPTOR

Thành phần Mô tả

Nsize Kích thước tính bằng byte của cấu trúc. Có thể thiết lập bằng sizeof (PIXELFORMATDESCRIPTOR). Nversion Số phiên bản (version( của cấu trúc, hiện bằng 1. DwFlags Các cờ đặc tính cho định dạng điểm ảnh (bảng 4.3) IpixelType

Mô tả dữ liệu màu của điểm vẽ:

- PFD_TYPE_RGBA đối với chế độ màu RGBA - PFD_TYPE_INDEX đối với chế độ màu chỉ mục

cColorBits

Số bít thể hiện một màu. Nó quyết định số màu thể hiện. chế độ màu RGBA, thì không tính đến alpha bitplance. Đối với chế độ màu chỉ mục, cColorBits xác định kích thước độ đệm màu.

cRedBits Sè bit đỏ trong bộ đệm màu RGBA

cRedShift Tổng độ dời các bitplane đỏ trong bộ đệm màu RGBA

cGreenBits Sè bit xanh lá trong bộ đệm màu RGBA

cGreenShift Tổng độ dời các bitplane xanh lá trong bộ đệm màu RGBA

cBlueBits Sè bit xanh dương trong bộ đệm màu RGBA

cBlueShift Tổng độ dời các bitplane xanh dương trong bộ đệm màu RGBA

cAlphaBits Sè bitplane trong bộ đệm màu RGBA. Không dùng trên microsoft Windows

cAlphaShift Tổng độ dời các bitplane alpha trong độ đệm màu RGBA. không dùng trên microsoft Windows

cAccumBits Sè bitplane trong độ đệm tích lũy

cAccumRedBits Sè bit đỏ trên một pixel trong độ đệm tích lũy cAccumGreenBits Sè bit xanh lá trên một pixel trong độ đệm tích lũy cAccumBlueBits Sè bit xanh dương trên một pixel trong độ đệm tích

lũy

cAccumAlphaBits Sè bit alpha trên một pixel trong độ đệm tích lũy cDepthBits Sè bitplane trong độ đệm chiều sâu

cStencilBits Sè bitplane trong độ đệm stencil

Windows

iLayerType

Xác định kiểu lớp trên Microsoft Windows là

PFD_MAIN_PLANE. Ngoài ra các kiểu lớp khác là

FPD_OVERLAY_PLANE và PFD_UNDERLAY_PLANE bServered Dùng dự trữ, thường bằng 0

dwLayerMask Hai trường hợp này đi đôi với nhau để xác định một lớp che một lớp

dwVisibleMask

dwDamageMask

Dùng khi nhiều hơn một định dạng điểm vẽ sử dụng chung bộ đệm khung. Nếu bitwise AND của các thành viên dwDamageMask của hai khung định dạng điểm vẽ khác 0, thì chúng sử dụng chung một độ đệm khung.

Bảng 4.3. Các cờ đặc tính cho định dạng điểm ảnh

Cờ Mô tả

PFD_DRAW_TO_BITMAP Bộ đệm được dùng vẽ vào bitmap bộ nhớ

PFD_DRAW_TO_WINDOW

Bộ đệm được dùng vẽ vào cửa sổ trên màn hình hay thiết bị khác như máy in

PFD_DOUBLEBUFFER

Thiết lập khi dùng bộ đệm đôi. Không dùng cùng với cờ PFD_SUPPORT_GDI

PFD_GENERIC_FORMAT

Thiết lập khi chọn định dạng điểm vẽ tổng quát, là định dạng điểm ảnh được hỗ trợ bởi phần cứng hay trình điều khiển thiết bị PFD_NEED_PALETTE Thiết bị khi dùng bảng màu logic

PFD_NEED_SYSTEM_PALETTE

Thiết lập khi hệ thống sử dụng phần cứng Open GL chỉ được hỗ trợ bởi một bảng màu phần cứng duy nhất. (Bảng màu phần cứng mapping một _ một với bảng màu logic).

PFD_STEREO

Thiết lập khi chọn bộ đệm lập thể. Không dùng trên Microsoft Windows PFD_SUPPORT_GDI Bộ đệm hỗ trợ các hàm đồ họa GDI Không dùng cùng với cờ PFD_DOUBLEBUFFER PFD_ SUPPORT_OPENGL Bộ đệm hỗ trợ các hàm đồ họa Open GL

PFE_DOUBLE_BUFFER_DONTCAR E

Định dạng có thể dùng bộ đệm đơn hay đôi, không ưu tiên cho riêng loại nào

PFD_STEREO_DONTCARE Cảnh lập thể hoặc không lập thể, không ưu tiên cho riêng loại nào Khi thiết lập định dạng điểm ảnh của ngữ cảnh dụng cụ thì cấu trúc

PIXELFORMATDESCRIPTOR được điền đầy và địa chỉ của nó được dùng làm

đối số cho hàm SetPixelFormat().

Với kỹ thuật quản lý ngữ cảnh tô vẽ thứ hai nh đã giới thiệu ở trên ta cần qua 5 bước cơ bản để khởi tạo môi trường đồ hoạ cho OpenGL:

Bước 1: Sử dụng AppWizard tạo một ứng dụng ban đầu

Bước 2: Sử dụng ClassWizard tạo các hàm

nCreate(),OnDestroy(),PreCreateWindow(),OnSize(),OnEraseBackGround() tương ứng với các thông điệp WM_CREATE,WM_DESTROY,WM_SISE, WM_ERASEBKGND, PreCreateWindow.

Bước 3 : Thay đổi lần lượt các hàm nh sau: Hàm OnCreate()

int CAnimateView::OnCreate(LPCREATESTRUCT lpCreateStruct) {

if (CView::OnCreate(lpCreateStruct) == -1) return -1;

PIXELFORMATDESCRIPTOR pfd = {

sizeof(PIXELFORMATDESCRIPTOR), // Structure size. 1, // Structure version number.

PFD_DRAW_TO_WINDOW | // Property flags. PFD_SUPPORT_OPENGL |

Một phần của tài liệu đồ án kỹ thuật cơ khí Mô phỏng quá trình gia công CNC trên máy DENFORD (Trang 34)

Tải bản đầy đủ (DOC)

(78 trang)
w