2009-02-12 44 views
9

Tôi đang cố vẽ văn bản lên màn hình bằng GLUT trong 2ngày.Làm cách nào để sử dụng glutBitmapString() trong C++ để vẽ văn bản lên màn hình?

Tôi muốn sử dụng glutBitmapString(), ai đó có thể chỉ cho tôi một ví dụ đơn giản về những gì bạn phải làm để thiết lập và sử dụng đúng phương pháp này trong C++ để tôi có thể vẽ một chuỗi tùy ý ở vị trí (X, Y)?

glutBitmapString(void *font, const unsigned char *string); 

Tôi đang sử dụng Linux và tôi biết mình cần tạo đối tượng Phông chữ, mặc dù tôi không chắc chắn chính xác cách và tôi có thể cung cấp chuỗi đó làm chuỗi thứ hai. Tuy nhiên, làm thế nào để tôi cũng xác định vị trí x/y?

Ví dụ nhanh về điều này sẽ giúp tôi rất nhiều. Nếu bạn có thể chỉ cho tôi cách tạo phông chữ, để gọi phương thức tốt nhất.

Trả lời

11

Bạn phải sử dụng glRasterPos để đặt vị trí raster trước khi gọi glutBitmapString(). Lưu ý rằng mỗi cuộc gọi đến glutBitmapString() tiến lên vị trí raster, vì vậy một số cuộc gọi liên tiếp sẽ in ra từng chuỗi một. Bạn cũng có thể đặt màu văn bản bằng cách sử dụng glColor(). Tập hợp các phông chữ có sẵn được liệt kê here.

// Draw blue text at screen coordinates (100, 120), where (0, 0) is the top-left of the 
// screen in an 18-point Helvetica font 
glRasterPos2i(100, 120); 
glColor4f(0.0f, 0.0f, 1.0f, 1.0f); 
glutBitmapString(GLUT_BITMAP_HELVETICA_18, "text to render"); 
+2

Thanks for the help adam. Ngoài ra, trong một thời gian dài nó giữ cho tôi glutBitmapString đã không được xác định, và cuối cùng tôi tìm thấy nó được đặt tên là "_glutBitmapString" trong GL/glui.h. Bất kỳ ý tưởng tại sao? – KingNestor

+0

'glutBitmapString' là phần mở rộng được triển khai trên' freeglut', không có mặt trong 'glut',' GL/freeglut.h' cũ phải được bao gồm thay vì 'GL/glut.h' – Alex

0

Thêm vào câu trả lời của Adam,

glColor4f(0.0f, 0.0f, 1.0f, 1.0f); //RGBA values of text color 
glRasterPos2i(100, 120);   //Top left corner of text 
const unsigned char* t = reinterpret_cast<const unsigned char *>("text to render"); 
// Since 2nd argument of glutBitmapString must be const unsigned char* 
glutBitmapString(GLUT_BITMAP_HELVETICA_18,t); 

Check-out https://www.opengl.org/resources/libraries/glut/spec3/node76.html để biết thêm tùy chọn phông chữ

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