kann kein openGL kompilieren...



  • hi,

    nachdem ich mich schon durch die SDL, die recht einfach war, gearbeitet habe, wurde in einem Tutorial openGL eingeführt, doch nicht gesagt, wie man dann den sourcecode kompilieren kann...

    wenn ich die SDL_openGL.h einbinde, dann geht das Programm ja noch, doch wenn ich was mit openGL dann machen möchte, dann kommt immer diese meldung:

    [Linker error] undefined reference to `glClearColor@16' (z.B.)

    was muss ich in der Commandline noch anhängen lassen? oder wie bekomme ich diesen fehler weg? bei bedarf kann ich auch den Sourcecode posten...



  • Du solltest vielleicht die passende Bibliothek einbinden, die diese Funktion bereitstellt. Damit du etwas lernst, empfehle ich die Textsuche mit eben diesem Funktionsnamen im Ordner deiner Bibliotheken durchzuführen 😉



  • Weil ich heute einen guten Tag habe gebe ich dir mein streng geheimes, selbst gebasteltes, Dev-C++ SDL + OpenGL Template, einfach in den Template Ordner kopieren und du kannst ein neues Projekt auswählen.

    SDL + OpenGL.template schrieb:

    [Template]
    ver=1
    Name=SDL + OpenGL
    Icon=SDL.ico
    Description=Create a multimedia application or game with SDL and OpenGL
    Catagory=MultiMedia

    [Unit0]
    CName=main.c
    CppName=main.cpp
    C=SDL + OpenGL_c.txt
    Cpp=SDL + OpenGL_c.txt

    [Project]
    UnitCount=1
    Type=0
    IsCpp=0
    Compiler=-I"<INCLUDE>\SDL" -Dmain=SDL_main
    Linker=-lmingw32 -lSDLmain -lSDL -liberty -lopengl32
    Name=SDL + OpenGL Project
    ProjectIcon=SDL.ico

    SDL + OpenGL_c.txt schrieb:

    #include <iostream>
    using namespace std;

    #include <SDL/SDL.h>
    #include <SDL/SDL_opengl.h>

    int main(int argc, char **argv)
    {
    SDL_Surface *screen;
    int running;

    if(SDL_Init(SDL_INIT_VIDEO)) /* OpenGL-Bildschirmmodus */
    SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5);
    SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 5);
    SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5);
    SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16);
    SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);

    screen = SDL_SetVideoMode(640, 480, 0, SDL_OPENGL);
    if (!screen) {
    cout << "Konnte Bildschirmmodus nicht setzen:\n"
    << SDL_GetError();
    exit(1);
    }

    /* Programmschleife */
    running = 1;
    while(running) {
    SDL_Event event;

    while(SDL_PollEvent(&event)) {
    switch(event.type) {
    case SDL_KEYDOWN:
    running = 0;
    break;
    case SDL_QUIT:
    running = 0;
    break;
    }
    }

    // Pageflip: Back- und Frontbuffer werden vertauscht
    SDL_GL_SwapBuffers();
    }

    return 0;
    }



  • danke an alle..... nun funktioniert es...
    ich habe ja die richtige lib eingebunden, nur nicht das angegeben, was der linker anhängen soll... jetzt habe ich es geschafft... danke für die schnellen antworten!



  • Probier trotzdem das template aus, spart arbeit 😉



  • wie funktioniert das denn genau? und wie wende ich es an? wenn es arbeit erspart, dann würde ich es gerne anwenden(bin so faul ;))



  • Wie gesagt einfach die Dateien SDL + OpenGL.template und SDL + OpenGL_c.txt in den Template Ordner von Dev-C++ kopieren, dann kannst du ein neues Projekt auswählen, alle Linkereinstellungen etc. sollten richtig sein...


Anmelden zum Antworten