2008-08-18 40 views
19

Tôi đang viết đơn giản OpenGL ứng dụng sử dụng GLUT. Tôi không muốn cuộn mã hiển thị phông chữ của riêng mình, thay vào đó tôi muốn sử dụng các phông chữ bitmap đơn giản đi kèm với GLUT. Các bước để họ làm việc là gì?Sử dụng phông chữ bitmap GLUT

Trả lời

27

Hiển thị văn bản đơn giản dễ thực hiện trong OpenGL sử dụng phông chữ bitmap GLUT. Đây là các phông chữ 2D đơn giản và là không phải phù hợp để hiển thị bên trong môi trường 3D của bạn. Tuy nhiên, chúng hoàn hảo cho văn bản cần được phủ lên trên cửa sổ hiển thị.

Dưới đây là các bước mẫu để hiển thị trích dẫn ưa thích của Eric Cartman của màu xanh trên cửa sổ GLUT:

Chúng tôi sẽ thiết lập các vị trí raster trong tọa độ màn hình. Vì vậy, hãy thiết lập ma trận chiếu và modelview để hiển thị 2D:

glMatrixMode(GL_PROJECTION); 
glPushMatrix(); 
glLoadIdentity(); 
gluOrtho2D(0.0, WIN_WIDTH, 0.0, WIN_HEIGHT); 

glMatrixMode(GL_MODELVIEW); 
glPushMatrix(); 
glLoadIdentity(); 

Đặt màu phông chữ. (Đặt ngay bây giờ, không muộn hơn.)

glColor3f(0.0, 1.0, 0.0); // Green 

Đặt vị trí cửa sổ nơi văn bản sẽ được hiển thị. Điều này được thực hiện bằng cách thiết lập vị trí raster trong tọa độ màn hình. Góc dưới bên trái của cửa sổ là (0, 0).

glRasterPos2i(10, 10); 

Đặt phông chữ và hiển thị các ký tự chuỗi sử dụng glutBitmapCharacter.

string s = "Respect mah authoritah!"; 
void * font = GLUT_BITMAP_9_BY_15; 
for (string::iterator i = s.begin(); i != s.end(); ++i) 
{ 
    char c = *i; 
    glutBitmapCharacter(font, c); 
} 

Khôi phục lại ma trận.

glMatrixMode(GL_MODELVIEW); 
glPopMatrix(); 

glMatrixMode(GL_PROJECTION); 
glPopMatrix(); 
+2

+1 để xem công viên phía nam –

+0

Tôi có một vài đối tượng trong tọa độ thế giới 3D và tôi cần hiển thị văn bản lớp phủ ở vị trí cố định trên chế độ xem. Tôi đã thử phương pháp này, nhưng nó không cho tôi văn bản lớp phủ cố định. Ngược lại, nó cho tôi văn bản quay khi camera di chuyển. Làm thế nào để bạn có được điều này để làm việc? – Papouh

+0

@Papouh: Điều đó thật lạ. Nếu bạn nhận thấy, các cuộc gọi tôi đang sử dụng là 2D, vì vậy cho cửa sổ. Chúng không nên di chuyển trong không gian 3D. –

Các vấn đề liên quan