Đây là một mã tôi sử dụng để vẽ hình chữ nhật trong chương trình của tôi:Border xung quanh kết cấu, OpenGL
glBegin(GL_QUADS);
glTexCoord2f(0.0f, maxTexCoordHeight); glVertex2i(pos.x, pos.y + height);
glTexCoord2f(0.0f, 0.0f); glVertex2i(pos.x, pos.y);
glTexCoord2f(maxTexCoordWidth, 0.0f); glVertex2i(pos.x + width, pos.y);
glTexCoord2f(maxTexCoordWidth, maxTexCoordHeight); glVertex2i(pos.x + width, pos.y + height);
glEnd();
Nó dựa chỉ là một hình chữ nhật đơn giản với kết cấu nhất định, ví dụ như thế này:
Tôi muốn hỏi nếu nó có thể trong OpenGL để đạt được hiệu ứng biên giới như thế này:
Như bạn thấy bên trong gạch này có chỉ là một nền màu xanh đồng bằng có thể được xử lý riêng - chỉ tự động thay đổi kích thước kết cấu. Điều này có thể đạt được một cách dễ dàng với một đoạn mã tôi đã đưa ra, nhưng vấn đề là với biên giới.
Nếu đường viền được cho là một màu, tôi có thể thử vẽ hình chữ nhật trống, không được lấp đầy bằng cách sử dụng GL_LINES
quanh kết cấu của tôi, nhưng không phải.
Ngoài ra nếu gạch luôn có kích thước cố định, tôi có thể chuẩn bị một ngôn ngữ phù hợp với nó, nhưng chúng phải dễ dàng thay đổi kích thước mà không thay đổi tệp bitmap mà tôi sử dụng làm kết cấu.
Vì vậy, nếu không thể thực hiện với các chức năng OpenGL cơ bản, cách tiếp cận nào để đạt được hiệu ứng này sẽ hiệu quả nhất và/hoặc dễ dàng?
CHỈNH SỬA: Nó phải là 2D.
Trừ khi bạn cần nó là 2d, tại sao không thực sự tạo ra hiệu ứng vát bằng cách làm cho hình thang-y hình 3D và sử dụng ánh sáng để có được hiệu ứng bóng bạn cần? – Quetzalcoatl
@Quetzalcoatl Cảm ơn bạn đã trả lời, nhưng có, nó phải là 2D. Tôi sẽ chỉnh sửa câu hỏi của mình để thêm thông tin này. –
Bạn có thể viết một trình đổ bóng phân đoạn để thêm đường viền. Tuy nhiên, nếu bạn vẫn đang sử dụng chế độ ngay lập tức (các chức năng lỗi thời như 'glVertex'), có thể bạn sẽ mất một thời gian để bắt kịp thế giới tuyệt vời của OpenGL 2.0 và hơn thế nữa. –