Shader-Problem(GLSL)



  • Hallo.
    Also,da ich mir jetzt die OOP vollends angeeignet habe,steige ich jetzt in die Shader ein.
    Da meine Grafikkarte nur die OpenGl-version 2.1 unterstützt 😞 ,sind die Shader
    (der OpenGL Shading Language)natürlich noch auf einer niedrigeren Version.
    Und jetzt hab ich eine Frage und ein Problem:

    1.Problem:
    Ich habe mir schon die Grundlagen der GLSL angeeignet und weiss,wie man Shader installiert.
    Hab auch alles richtig gemacht.
    Aber folgendes:
    Wenn ich die Shader installiere,kommt bei jeder Funktion(glCreateShader(),usw...),dass es zu jeder Funktionen keine definierte Referenz zu z.B(glewCreateShader(),usw...)gibt.
    Entferne ich glew.h aus dem Projekt,so erkennt er z.B GL_VERTEX_SHADER nicht.
    Was könnte der Fehler sein?

    2.Frage:
    Also hab eine nVidia geforce fx5500.Da es ein älteres Modell ist,brauche ich später irgendwann eine bessere.Natürlich kostet die neueste Geforce nur 90€,aber mein System unterstützt die auf jeden Fall nicht.
    Nun könnte ich mir eine nicht ganz neue kaufen,aber da ich mir sowieso einen besseren Computer kaufen werde und der natürlich auch die neuen Grafikkarten unterstützt,hätte ich umsonstr eine neue gekauft.
    Deswegen wollte ich bis ich mir einen neuen Computer kaufe,in meinen alten Computer eine ATI X800 einbauen.
    Da ich Zuhause noch so eine habe.
    Aber,ist diese besser als meine Geforce fx5500,also lohnt es sich die einzubauen.
    Wenn es jmd. weiß,so kann er es ja auch bitte schreiben.



  • Was heisst "keine definierte Referenz"? Meinst du den Linkerfehler? Dann musst du eben glew.lib linken.

    Zur Grafikkarte würde ich mir nicht allzu starke Sorgen machen, mit OpenGL 2.1 kannst du schon einiges erreichen. Es sei denn du willst direkt modernes OpenGL lernen oder benötigst ein spezifisches Feature.



  • Die fx5500 ist sehr langsam! Die x800 kenn ich nicht, ist jedoch von den technischen Daten deutlich schneller. Also auf jeden Fall eine Verbesserung.



  • Ja,die FX5500 ist wirklich ziemlich lahm,aber für die Zeit,bevor ich den neuen Computer habe,werde ich mir die Ati einbauen.
    Nur noch so ne Frage:
    Ich hab mir mal die Shader-Version ausgeben lassen und da stand,dass der Shader über CG kompiliert wird und CG ist ja von NVidia.
    Also müssen dann die Shader bei der ATI von einem anderen "Programm" komiliert werden?
    Aber dafür sorgt die ATI wahrscheinlich(also für den Shader-Compiler),oder bin ich mit der Annahme falsch?
    Und generell wollte ich Fragen ob der Verzicht auf eine nVidia Nachteile mit sich bringt.

    Ok,jetzt zum eigentlichen:
    also um den genauen Fehlercode zu geben:
    undefined reference to ___imp____glewCreateShader
    usw.
    Naja und ich habe nur die Headerdatei "glew.h",also muss ich mir noch die Bibliotheken dazu downloaden,oder was?

    Edit:Achso nein,habe die Bibliotheken doch schon gelinkt(samt dll).

    Edit:Habe grade glaube ich die Lösung für mein Problem gefunden:
    glew wurde bei mir mit

    glewinit();
    

    noch nicht aktiviert.
    Denke mal das war das Problem,oder?



  • Tu Dir selbst eiben gefallen, füge glew.c sowie GL/glew.h zu Deinem Projekt hinzu und linke das ganze statisch (GLEW_STATIC nicht vergessen zu definieren).

    Grüße ...



  • Stechus Kaktus schrieb:

    Tu Dir selbst eiben gefallen, füge glew.c sowie GL/glew.h zu Deinem Projekt hinzu und linke das ganze statisch (GLEW_STATIC nicht vergessen zu definieren).

    Wozu sollte man es noch linken, wenn man es innerhalb des Projekts kompiliert?



  • Ich wollte herausstellen, dass GLEW_STATIC definiert sein muss, gerade weil Objektdateien eines Projektes für gewöhnlich statisch gelinkt werden.

    Grüße ...


Log in to reply