2008-08-18 13 views
19

मैं GLUT का उपयोग करता है एक सरल OpenGL आवेदन लिख रहा हूँ। मैं अपने खुद के फ़ॉन्ट रेंडरिंग कोड रोल नहीं करना चाहती है, इसके बजाय मैं सरल बिटमैप फ़ॉन्ट GLUT साथ जहाज का उपयोग करना चाहते। उन्हें काम करने के लिए क्या कदम हैं?का उपयोग भरमार बिटमैप फोंट

उत्तर

27

सरल पाठ प्रदर्शन भरमार बिटमैप फोंट का उपयोग कर ओपन में करने के लिए आसान है। ये सरल 2 डी फोंट कर रहे हैं और अपने 3 डी वातावरण के अंदर प्रदर्शन के लिए नहीं उपयुक्त हैं। हालांकि, वे टेक्स्ट के लिए बिल्कुल सही हैं जिन्हें डिस्प्ले विंडो पर ओवरले किया जाना चाहिए।

यहाँ एरिक Cartman के पसंदीदा उद्धरण प्रदर्शित करने के लिए नमूना चरणों भरमार खिड़की पर हरे रंग में रंग रहे हैं:

हम स्क्रीन निर्देशांक में रेखापुंज स्थिति में सेट करेंगे। तो, 2 डी प्रतिपादन के लिए प्रक्षेपण और मॉडलव्यू मैट्रिक्स सेट करें:

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

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

फ़ॉन्ट रंग सेट करें। (अब यह निर्धारित करें, बाद में नहीं।)

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

खिड़की स्थान जहां पाठ प्रदर्शित किया जाना चाहिए निर्धारित करें। यह स्क्रीन निर्देशांक में रास्टर स्थिति सेट करके किया जाता है। खिड़की के निचले बाएं कोने (0, 0) है।

glRasterPos2i(10, 10); 

फ़ॉन्ट सेट करें और 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); 
} 

matrices को पुनर्स्थापित करें।

glMatrixMode(GL_MODELVIEW); 
glPopMatrix(); 

glMatrixMode(GL_PROJECTION); 
glPopMatrix(); 
+2

+1 दक्षिण पार्क –

+0

देखने के लिए मैं 3 डी दुनिया समन्वयकों में कुछ वस्तुओं है और मैं व्यूपोर्ट पर एक निश्चित स्थान पर ओवरले पाठ प्रदर्शित करने की जरूरत है। मैंने इस दृष्टिकोण की कोशिश की, लेकिन यह मुझे निश्चित ओवरले टेक्स्ट नहीं देता है। इसके विपरीत, यह मुझे पाठ देता है जो कैमरे की चाल के रूप में घूमता है। आप इसे काम करने के लिए कैसे प्राप्त करते हैं? – Papouh

+0

@Papouh: यह अजीब है। यदि आप ध्यान देते हैं, तो मैं जिन कॉलों का उपयोग कर रहा हूं वे 2 डी हैं, इसलिए खिड़की के लिए। उन्हें 3 डी में चारों ओर नहीं जाना चाहिए। –

संबंधित मुद्दे