OpenGL

  1. Peter Stoffer

    Peter Stoffer Thread StarterMacUser Mitglied

    Mitglied seit:
    18.02.2004
    Beiträge:
    15
    Zustimmungen:
    0
    Hallo zusammen

    ich möchte beginnen, mit OpenGL zu programmieren. Ich habe ein C++-Tool erstellt, das GLUT-Framework importiert und wenig Code aus einem Beispiel abgeschrieben.
    Beim Kompilieren erhalte ich jedoch diese Fehlermeldung:

    ld: /Users/pstoffe/MyGlut/build/MyGlut.build/MyGlut.build/Objects-normal/ppc/main.o illegal reference to symbol: _glBegin defined in indirectly referenced dynamic library /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib

    Was mache ich falsch?

    Vielen Dank für eure Hilfe
     
    Peter Stoffer, 17.03.2004
  2. -Nuke-

    -Nuke-MacUser Mitglied

    Mitglied seit:
    13.09.2003
    Beiträge:
    2.135
    Zustimmungen:
    15
    Wie sieht denn der Code aus?
     
    -Nuke-, 17.03.2004
  3. Peter Stoffer

    Peter Stoffer Thread StarterMacUser Mitglied

    Mitglied seit:
    18.02.2004
    Beiträge:
    15
    Zustimmungen:
    0
    Das Programm soll ein weisses Viereck auf schwarzem Hintergrund anzeigen:

    main.cpp:

    #include <OpenGL/gl.h>
    #include <GLUT/glut.h>

    void display(void)
    {
    glClear (GL_COLOR_BUFFER_BIT);
    glColor3f (1.0, 1.0, 1.0);
    glBegin(GL_POLYGON);
    glVertex3f (0.25, 0.25, 0.0);
    glVertex3f (0.75, 0.25, 0.0);
    glVertex3f (0.75, 0.75, 0.0);
    glVertex3f (0.25, 0.75, 0.0);
    glEnd();
    glFlush ();
    }

    void init (void)
    {
    glClearColor (0.0, 0.0, 0.0, 0.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
    }

    int main(int argc, char** argv)
    {
    glutInit(&argc, argv);
    glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize (250, 250);
    glutInitWindowPosition (100, 100);
    glutCreateWindow ("hello");
    init ();
    glutDisplayFunc(display);
    glutMainLoop();
    return 0;
    }
     
    Peter Stoffer, 17.03.2004
  4. -Nuke-

    -Nuke-MacUser Mitglied

    Mitglied seit:
    13.09.2003
    Beiträge:
    2.135
    Zustimmungen:
    15
    Hmm. Also bei mir funktioniert es so wie es soll.

    Mache mal folgendes:

    1. XCode starten.
    2. Neues C++-Tool als Projekt
    3. Links im Dateibaum, das Projekt "aufklappen", external Frameworks, dort das GLUT und das OpenGL FrameWork einfügen. Also dort wo auch libstc++ drinnen ist.
    4. Dein Code einfügen
    5. Ausführen
     
    -Nuke-, 17.03.2004
  5. Peter Stoffer

    Peter Stoffer Thread StarterMacUser Mitglied

    Mitglied seit:
    18.02.2004
    Beiträge:
    15
    Zustimmungen:
    0
    Ich habe das Problem lösen können: Ich habe vergessen, OpenGL.framework zu importieren. Ausserdem musste ich libobjc.A.dylib importieren (keine Ahnung warum...).
     
    Peter Stoffer, 17.03.2004
  6. Corleone

    CorleoneMacUser Mitglied

    Mitglied seit:
    04.05.2003
    Beiträge:
    67
    Zustimmungen:
    0
    Wie macht man das jetzt?

    Hi,

    also ich hab glaube ich ein ähnliches Problem. Ich möchte einfach ein Code Stück in C mit der OpenGL Bibliothek (GLUT) compilieren und ausführen ohne XCode benutzten zu müssen, also einfach mit dem Terminal und gcc.

    Ich weiss, dass die Zeilen

    #include <OpenGl/gl.h>
    #include <OpenGl/glu.h>

    eigentlich wegfallen können, da ja schon GLUT importiert wird. Aber hab es sicherheitshalber gemacht. Das Programm lässt sich mit gcc fehlerfrei übersetzen aber nicht linken. Ich erhalte folgende Fehlermeldung:

    ld: warning prebinding disabled because of undefined symbols
    ld: Undefined symbols:
    _glBegin
    _glClear
    _glClearColor
    _glColor3f
    _glEnd
    _glFlush
    ...
    ....

    Muss ich auch irgendwie das OpenGl Framework unter MAC einbinden...?

    Oder wie läuft das jetzt mit OpenGL unter MAC, ohne irgendeine IDE???


    Der Code sieht folgendermaßen aus:

    #include <stdlib.h>
    #include <stdio.h>

    #include <OpenGl/gl.h>
    #include <OpenGl/glu.h>

    #include <GLUT/glut.h>


    void display(void)
    {

    /* clear all pixels */
    glClear(GL_COLOR_BUFFER_BIT);

    /* draw white polygon (rectangle) with corners at
    * (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0)
    */

    glColor3f(1.0, 1.0, 1.0);
    glBegin(GL_POLYGON);
    glVertex3f(0.25, 0.25, 0.0);
    glVertex3f(0.75, 0.25, 0.0);
    glVertex3f(0.75, 0.75, 0.0);
    glVertex3f(0.25, 0.75, 0.0);
    glEnd();


    /* don't wait!
    * start processing buffered OpenGL routines
    */

    glFlush();
    }

    void init (void)
    {

    /* select clearing (background) color */
    glClearColor(0.0, 0.0, 0.0, 0.0);


    /*initialize viewing values */
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
    }

    /* Declare initial window size, position, and display mode
    * (single buffer and RGBA). Open Window with "hello"
    * in its title bar. Call initialization routines.
    * Register callback function to display graphics.
    * Enter main loop and process events.
    */

    int main (int argc, char** argv)
    {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(250, 250);
    glutInitWindowPosition(100,100);
    glutCreateWindow("hello");
    init();
    glutDisplayFunc(display);
    glutMainLoop();

    return 0;
    }



    Vielen Dank für die Hilfe.

    P.S.: Ich nutze Mac OS X Panther 10.3.3
     
    Corleone, 20.05.2004
  7. -Nuke-

    -Nuke-MacUser Mitglied

    Mitglied seit:
    13.09.2003
    Beiträge:
    2.135
    Zustimmungen:
    15
    -framework GLUT -framework OpenGL

    anhängen an den Compilerbefehl. Also z.B. gcc -o Programm main.cpp -framework GLUT -framework OpenGL

    Dann musst zu aber glaube ich noch -Wl,/usr/lib/libobjc.A.dylib ranhängen. Keine Ahnung warum.

    Also:

    PHP:
    gcc -o Programm main.cpp -framework GLUT -framework OpenGL -Wl,/usr/lib/libobjc.A.dylib
     
    -Nuke-, 20.05.2004
  8. Corleone

    CorleoneMacUser Mitglied

    Mitglied seit:
    04.05.2003
    Beiträge:
    67
    Zustimmungen:
    0
    Danke vielmals, Nuke!

    so funktioniert.

    komisch nur, dass das kompilieren so lange dauert, bei so einem kleinen Programm!!!
     
    Corleone, 20.05.2004
Die Seite wird geladen...
Ähnliche Themen - OpenGL
  1. Dylans Ghost
    Antworten:
    2
    Aufrufe:
    251
    Dylans Ghost
    06.11.2015
  2. Dylans Ghost
    Antworten:
    4
    Aufrufe:
    402
    Dylans Ghost
    30.10.2012
  3. theGK01
    Antworten:
    7
    Aufrufe:
    789
    theGK01
    10.06.2012
  4. azrax
    Antworten:
    1
    Aufrufe:
    889
    DeineMudda
    10.03.2011
  5. SchodMC
    Antworten:
    11
    Aufrufe:
    1.063
    SumpfMonsterJun
    13.02.2011