2011-10-24 7 views
11

बिना मैक पर ओपनजीएल हैलो वर्ल्ड मैक (शेर) पर ओपनजीएल के लिए एक हैलो वर्ल्ड लिखने की कोशिश कर रहा हूं। मुझे कुछ related post या youtube tutorial मिल गया है, लेकिन उनमें से अधिकांश को एक्सकोड की आवश्यकता है। मैं एक्सकोड के साथ ठीक हूं, लेकिन मैंने सोचा कि केवल एक हैलो दुनिया लिखने के लिए कुछ सरल दृष्टिकोण होना चाहिए, टर्मिनल, संकलन और चलाने के दौरान vim में एक .cpp फ़ाइल लिखने के समान। (निश्चित रूप से पहले आवश्यक होने पर पुस्तकालय स्थापित करें)एक्सकोड

कोई विचार या सुझाव?

उत्तर

17

यदि आप ओएसएक्स का उपयोग कर रहे हैं तो मैं अत्यधिक एक्सकोड का उपयोग करने की सिफारिश करता हूं और NSOpenGLView का उपयोग करता हूं। This पुस्तक में कई एपीआई के बारे में बहुत सारी सामग्री है जिसका आप उपयोग कर सकते हैं। जीएलयूटी निश्चित रूप से पकड़ने और स्थापित करने के लिए सबसे तेज़ है।

आप इस कोशिश आप भरमार का उपयोग करें और टर्मिनल पर संकलित करने के लिए चाहते हैं, तो हो सकता है:

#include <GLUT/glut.h> 

void display(void) { 

    //clear white, draw with black 
    glClearColor(255, 255, 255, 0); 
    glColor3d(0, 0, 0); 

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

    //this draws a square using vertices 
    glBegin(GL_QUADS); 
    glVertex2i(0, 0); 
    glVertex2i(0, 128); 
    glVertex2i(128, 128); 
    glVertex2i(128, 0); 
    glEnd(); 

    //a more useful helper 
    glRecti(200, 200, 250, 250); 

    glutSwapBuffers(); 

} 

void reshape(int width, int height) { 

    glViewport(0, 0, width, height); 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 

    //set the coordinate system, with the origin in the top left 
    gluOrtho2D(0, width, height, 0); 
    glMatrixMode(GL_MODELVIEW); 

} 

void idle(void) { 

    glutPostRedisplay(); 
} 

int main(int argc, char *argv) { 

    //a basic set up... 
    glutInit(&argc, &argv); 
    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH); 
    glutInitWindowSize(640, 480); 

    //create the window, the argument is the title 
    glutCreateWindow("GLUT program"); 

    //pass the callbacks 
    glutDisplayFunc(display); 
    glutReshapeFunc(reshape); 
    glutIdleFunc(idle); 

    glutMainLoop(); 

    //we never get here because glutMainLoop() is an infinite loop 
    return 0; 

} 

और फिर साथ संकलन:

gcc /System/Library/Frameworks/GLUT.framework/GLUT /System/Library/Frameworks/OpenGL.framework/OpenGL main.c -o myGlutApp 

कि चाल करना चाहिए। मैं कहूंगा कि XCode के साथ काम करने की कोशिश न करें और इससे आपको समय और निराशा बचाएगी।

+0

मैंने टर्मिनल में आपकी विधि की कोशिश की लेकिन प्राप्त करें: hello.c: 47: 21: त्रुटि: जीएल/glut.h: ऐसी कोई फ़ाइल या निर्देशिका – clwen

+0

हम्म, मैं 10.6 (बर्फ तेंदुए) चला रहा हूं और यह काम करता है। क्या आप सत्यापित कर सकते हैं कि आपके सिस्टम पर GLUT है? क्या आपने एक्सकोड और ऐप्पल के डेवलपर टूल इंस्टॉल किए हैं? – whg

+0

यह "GL/glut.h" से "GLUT/glut.h" में पथ शामिल करने के बाद काम करता है। आपका बहुत बहुत धन्यवाद! – clwen

0

जीएलयूटी का उपयोग करने और एक छोटा सी ++ प्रोग्राम लिखने का प्रयास करें। आप आवश्यक पुस्तकालयों को स्थापित करने के लिए मैकपोर्ट की तरह कुछ उपयोग कर सकते हैं।

-1

ओपनजीएल पर किसी भी पुस्तक के उदाहरण/ट्यूटोरियल कोड के लिए ऑनलाइन देखें। वे सभी बहुत ही सरल कार्यक्रमों से शुरू होते हैं जिनके लिए अधिकांश जीएलयूटी (जैसा कि किसी अन्य पोस्टर द्वारा उल्लिखित) की आवश्यकता होती है, और आम तौर पर उन्हें बनाने के निर्देशों के बारे में निर्देश होते हैं। तो बस इन सरल कार्यक्रमों में से एक डाउनलोड करें और इसे प्राप्त करें और चलाएं।

5

यह थोड़ा पुराना है लेकिन मैं इसका जवाब दूंगा क्योंकि मैंने अभी यह सीखा है कि यह कैसे करना है। सबसे पहले नमूना कोड में दो त्रुटियां हैं, उन्हें ठीक करना आसान है। ओएस एक्स 10.8 पर क्लैंग का उपयोग करके यह काम करता है।

clang++ -framework glut -framework opengl hello.cpp 

उपरोक्त कोड को संकलित करना चाहिए। हालांकि मुख्य समारोह का हस्ताक्षर गलत है।

<int main(int argc, char *argv) 
>int main(int argc, char **argv) 

कौन सा glutInit गलत करता है,

<glutInit(&argc, &argv); 
>glutInit(&argc, argv); 

उत्पादन बेकार है, लेकिन यह एक खिड़की बनाता है और यह कैसे बजना साथ चौखटे का उपयोग को दर्शाता है। स्टार्टर फ़ाइल के लिए धन्यवाद।

+0

इवान का फिक्स मेरे लिए काम करता था, (ओएसएक्स मैवरिक्स)। https://gist.github.com/omenking/35b920a1d2cbf99fc6f2 a.out फ़ाइल चलाने के लिए बस अपनी कमांड लाइन में /a.out डालें। –