glConvolutionFilter



  • Hi

    hat von euch schon mal jemand die Funktion glConvolutionFilter1D oder 2D hergenommen? ich bekomme immer "Aufruf der Undefinierten Funktion 'glConvolutionFilter1D'". Hab die glext.h includiert und in der find ich auch die Funktion nur mein rechner nicht (den headerpfad hab ich gesetzt) weiss jemand was ich tun muss um die funktion hernehmen zu können?

    Danke schonmal


  • Mod

    wenn es nicht in oGL 1.1 schon standard war kann es sein, dass du dir den functionpointer selbst besorgen mußt

    http://www.opengl.org/developers/code/features/OGLextensions/OGLextensions.html

    da ist alles nötige beschrieben mit cody zum copy&paste

    vorher solltest du allerdings nachsehen ob deine opengl.dll diese function überhaupt exportiert.

    rapso->greets();



  • wie schau ich denn nach ob meine opengl.dll diese funktion exportiert? 😕


  • Mod

    das einfachste ist vielleicht die datei mit einem texteditor zu öffnen und nach "glConvolutionFilter" suchen lassen.

    rapso->greets();



  • Hmm hab die opengl32.dll im editor aufgemacht und nach glConvolutionFilter suchen lassen aber der hat nix gefunden aber ich mein wie soll man unter kryptischen zeichen auch was finden können? na ja jedenfalls kenn ich mich gar nicht mehr aus und hab keine ahnung wie ich die dumme convolution machen soll.


  • Mod

    kannst ja nach sowat wie glColor suchen, das sollte der editor finden, die functionnames müßten in der opengl.dll als normal lesbare strings stehen.. es gibt natürlich sachen wie z.B. dependencies-viewer oder sowat, die zeigen dir alle funktionen aufgelistet... oder oGL extension viewer.

    wofür brauchste den convolutionfilter so dringend?

    rapso->greets();



  • gigantisch glColor steht drin!

    will mit der convolution bilder interpolieren so mit spline-funktionen und so. weiss noch nicht mal ob das dann wirklich so geht aber angeblich schon. Rauslaufen solls jedenfalls auf schnelle Bildinterpolation in Videofrequenz


  • Mod

    versuche mal auf
    http://oss.sgi.com/projects/ogl-sample/registry/

    vielleicht das passende zu finden.. ansonsten kannst du mit pixelshadern filtern 😃

    rapso->greets();



  • Quotenmausi schrieb:

    gigantisch glColor steht drin!

    *LOL*



  • rapso schrieb:

    .. ansonsten kannst du mit pixelshadern filtern

    Oh werd ich gleich mal schaun was das ist und wie des geht
    danke


  • Mod

    naja, ich hab mit dem convolutionfilter noch nie gearbeitet, deswegen weiß ich net ob der auf geometrie oder auf pixel bezieht... könnte also sein dass du eher vertexshader bräuchtest... aber das ist alles eventuell zuviel overhead für dein ziel.

    wenn du vielleicht ein beispielprolbem (filter) beschrieben würdest, könnte man ja sehen ob das anders zu machen ist.

    notfalls kannst du dir "Mesa" ansehen, ich glaube in dieser openGL emulation ist die von dir gewünschte extension implementiert.

    rapso->greets();



  • ein Beispiel ok ich versuchs mal

    also ich hab ein bild (bmp) in matrixform z.b.

    [45 67 87 35 94 54
    93 12 29 31 46 1
    87 90 68 68 13 57
    13 64 97 34 56 15]

    und möchte quasi eine Matrix mit der Form

    [1 0 0
    0 1 0
    0 0 1]

    drüberschieben.

    dann bekomm ich ja eine neue matrix und somit ein neues bild als ergebnis. dieses Bild kann die gleiche grösse haben und ist somit gefiltert oder aber ich kann es auf eine neue grösse bringen soweit ich das kapiert habe. was rauskommt hängt davon ab welche matrix ich darüberschiebe.

    Laut meinem Buch kann ich bei ConvolutionFilter die matrix mit der gefaltet werden soll selbst bestimmen.

    hoffe ich hab des richtigrum erklärt


  • Mod

    in dem buch http://www.shaderx.de/ wird gezeigt wie man verschiedenste matrizen (mittes pixelshader/fragmentshader) auf ein bild anwenden kann.

    ich hab hier mal auf verschiedenen karten in den opengl.dlls geschaut, glconvolutionfilter wird nirgens als exportierte funktion angegeben.

    rapso->greets();



  • @ rapso danke fürs schaun ob glconvolutionfilter irgendwo drin ist, bist ein Traum. ich hab auch nix gefunden. aber mal ne frage dazu wenn ich des nirgends hernehmen kann wieso gibts des dann überhaupt oder besser andersherum wieso gibts des und ich kanns nicht benutzen? ist mir rätselhaft.
    werd mich jetzt mal mit dem shadern beschäftigen


  • Mod

    wieso es in deinem buch steht, das wundert mich auch.

    die funktion wurde ja schon vor längerem eingeführt, damals gab es keine shaderextensions und somit war das das einzig logische für karten die sowas unterstützen, soweit ich weiß gibt es nämlich ein paar recht teure die wohl aus dem grund, den du jetzt angibst, auch diese feature unterstützten.

    doch heute muss man eher nicht so mit grafikkarten filtern, weil eine cpu mit mmx auch recht gute performance erreicht. wenn man einfache filter auf der grafikkarte macht, muss man erstmal die textur hochladen und dann eventuell für z.B. colorpicking wieder runter ins ram. die ganze prozedur ist relativ aufwendig und bringt nicht sonderlich viel performance. zumal, wenn man wirklich auf rechenleistung angewiesen ist, z.B. um einen film zusammen zu blenden, dann hat der film auch schon ne auflösung von 3200*2400 pixeln und viele grafikkarten schaffen nur 2048*2048 als maximum (eine geforceFX schafft 4096*4096).

    wenn man sowas auf eine spezielle sache optimiert z.B. farbraum konvertierung oder einen smooth filter für filme die man sich als textur auf objekte stecken möchte, dann wird das schneller laufen, weil die cpu eh ausgelastet ist und das auf der graka eventuell nur 3 zusätzliche instructions sind.

    rapso->greets();



  • die glconvolutionfilter funktion steht übrigens im "OpenGL SuperBible Second Edition" und im "OpenGL Programming Guide Third Edition" drin. wobei die PuberBible immerhin nen verweis macht dass das ne kann-funktion ist aber im anderen hab ich da nix gefunden.


Anmelden zum Antworten