All in One C-Crossplattform-Framework (OpenGL/OpenAL/Sockets and more)



  • [edit]
    http://www.c64.feuerware.com/page/viewtopic.php?f=39&t=75&p=95#p95

    Layered Windows ..... und die Spielereien die sich damit anstellen lassen 🙂
    (wird in V0.04a released)

    [/edit]

    Hi,

    wollte mal fragen ob wer Interesse hat an einem Project mitzuarbeiten, nur Just4Fun, na gut evtl. könnte man was bei lernen aber das sollte das schlimmste sein was passieren kann 🙂 naja vllt. ein wenig Spass noch aber dann hörts auch auf mit den schlimmen Dingen.

    Hab schon einiges am laufen, vieles rudimentär aber zumindest mit Prototypen und Funktionalität implementiert. Als da wären

    OpenGL 1.1 Windows/Linux
    OpenAL Windows/Linux
    Sockets Windows/Linux

    Soll später auch auf Mac und evtl. ES. also Mob.Devs. laufen aber erschmal is ja so schon gut!

    3D und OGL>1.1 sind auch vorgesehen aber hey, gemach gemach!

    Der Rest ist erstmal Spielerei, wobei die GUI schon was wäre wenn da mehr Ideen einfliessen würden.

    Ich weiss es gibt genug Frameworks in diese Richtung, es geht eher um den Spass!

    Würde ja gerne mehr zu meiner Phylosophie schreiben meiner Ambitionen des schreibens dieses Frameworks gegenüber, aber is spät und mir juckte es nur in den Fingern euch mal mein "schaffen" zu präsentieren, weil langsam wirds mal Zeit für Feedback (ca. 5 Monate tun ohne PR *GRINS ).

    Achtung alles PREALPHA!!! Vorschläge und Anregungen sind gerne Willkommen, Kritik in dieser Phase der Entwicklung wohl noch nicht wirklich angebracht ;)!
    Es kann sich noch vieles ändern, sogar Grundlegendes, solange die Prototypen nicht in einem gravierendem Ausmaß betroffen sind!

    mfg. Patrick.

    http://www.c64.feuerware.com/page/viewtopic.php?f=45&t=70&p=79#p79



  • Ich kann leider kein C 😃
    Hast du auch Makefiles dazu, oder wie soll ich das kompilieren?

    EDIT: Hab's hinbekommen (mit CodeBlocks). Sieht ganz gut aus 🙂



  • hi,

    also heute bin ich nicht mehr der zu empfehlende Gesprächspartner für sittliche Gespräche 😃 .

    Und auch wenn ich die vielen vielen files geschrieben habe, n makefile habe ich ....JA ZU MEINEM BESCHÄÄÄHHMEN 😡 .... noch nie angefasst, ja gut geöffnet aber erstellt hmm ney! 🤡 (IDE verwöhntes Menschenkind)

    Würde mich freuen wenn du morgen oder die Tage Zeit hättest mir da vllt. ein wenig zu helfen?! (hab n chatsystem kein ICQ oder so nötig somit ist Livecontact gewährleistet)

    Und wenns compiliert ist dann ist es ja auch in c und Co nutzbar :), vllt. können wir ja beide voneinander lernen!

    mfg. Patrick und n schönen abend noch @pyhax

    [EDIT]

    Edit eben gesehen, *Rotwerd, Danköö 🙂 !!

    [/EDIT]



  • http://gist.github.com/1594674
    Da ist ein File für CMake ( http://cmake.org ) . CMake kann auch Makefiles erstellen 🙂

    (Wenn du in Zeile 15 das -Werror entfernst kompiliert es auch. So gibt es bei (fast) jeder Warnung einen Fehler (wenn du GCC verwendest) )

    PS: Du könntest mal versuchen die ganzen Warnings weg zu kriegen. (z.B

    source/dynamicdata/pt_hashtable/pt_hashtable.c:237:13: error: comparison of unsigned expression >= 0 is always true [-Werror=type-limits]
    


  • Moin pyhax,

    jou hab mir schon ein wenig zu Makefiles angeschaut, aber wie gesagt noch nie in der "Bredouilie" gewesen eines schreiben zu müssen (aber können sollte ich es dennoch).

    Die Compilerwarnungen versuche ich schon vor/nach fast jedem Build zu minimieren, sind auch schon eine Menge weg, aber kommen hier und da auch wieder welche zu, manche vergisst oder schlimmer noch ignoriert man einfach, irgentwann solln da aber einmal Null Warnungen stehen :).

    Wenn man schon einige Stunden schaffen tut dann schleichen sich sonne Sinnfreien sachen ein wie if((unsigned)XY>=0) *Grieen, is mir auch erst eben durch Dich aufgefallen.

    Und je mehr "fähige" Augen hier und da nen Blick drauf werfen wird auch die Qualität des Projektes steigen (hoffe ich). Auch wenn Spaß im vordergrund steht soll das Framework auch mal irgentwann zumindest für den Entwurf von Prototypen produktiv einsetzbar sein.

    So CMake mal runtergeladen, werde mich mal mit auseinandersetzen, vielen Dank für dein CMakeLists.txt und deine Bemühungen!

    mfg. Patrick

    [EDIT]

    Process terminated with status 0 (0 minutes, 51 seconds)
    0 errors, 0 warnings
    

    Allerdings unter Verwendung von -Wall ist da noch einiges zu tun, der größte Teil ist aber Entwicklungsprozesstechnisch^^ bedingt! Werde ich heute aber auch noch soweit wie möglich reduzieren, und dann nochmal neu Uploaden denke Ich.
    [/EDIT]



  • Ja habe auch gerade herausgefunden das es ja noch -Wextra gibt. 😃
    Außerdem, wenn du die ganzen anderen Warnings weg hast kannst du auch mal -Weffc++ probieren, da sind aber einige sinlose Warnings dabei. 😉



  • Hi,

    so hab ein wenig was gemacht, viele Compilerwarnings und Bugs (in v0.02a ist auch hochgeladen) behoben. Leider geht es in letzter Zeit nicht mehr so gut vorran, zum einem stecke ich in Prüfungsvorbereitungen und Lernstress, und zum anderem mangelt es einfach an eigenen Ideen für Projekte die man mit dem PT-Framework (Graphic/Sound) erstellen könnte.

    Naja und Feedback fehlt natürlich, hmm aber ich bin nunmal nicht der Einzige der hier ein Crossplattform-Framwork zur Visualisierung und "Spieleprogrammierung" erstellt, und mangels Doku und ordentlicher Präsentation ist es auch nicht verwunderlich 😃 , das Feedback fehlt, zumal die anderen die vielleicht schon weiter sind oder einfach qualitativer auch mit Feedbackmangel zu "kämpfen" haben.

    Naja ok wollte einfach mal nur eine kleine Spielerei zeigen was nun möglich ist, und einfach mal wieder ein wenig aufmerksam auf das PT-Framework machen.

    Diese Demo läuft nur unter WIN32, auch sind die Features noch nicht in der V0.02a enthalten, aber ich werde ma schauen ob ich zum WE die neue Version (0.03a) hochlade, wenn es jemand möchte.

    Zur Demo:

    2 Unabhängige Fenster, werden als Augen "Missbraucht", ja sind nur gezeichnete Primitive, also sieht aus wie Augen mit Paint gezeichnet *GRINS (mit Fotorealistischen Material wird das bestimmt ganz 🕶 kommen )! Die Pupillen verfolgen die Maus (muss aber noch was feintunen!!!), ist so ähnlich wie das Augenwidget von Linux.

    Die Augen können verschoben werden, einfach eines Anklicken und dann Spacetaste gedrückt halten, dabei Augen positionieren mit der Mouse.

    Fehlt noch das die Fenster automatisch im Vordergrund bleiben, aber hmm erstmal nicht sooo wichtig und ist ehh nur eine Spielerei! Soll ja nur eine "Techdemo" sein.

    Aber man kann sich auch eine schöne Analog-Desktopuhr Programmieren etc. Alpha wird auch für Fenster unterstützt 😉 (evtl. auch bald Layered-Windows?)!

    mfg. Patrick_C64

    Hier eine Binary zum Download und der Source dazu.

    #include "environment.h"
    
    void Environment () {
    
      // create array for our graphics
      pt_graphics_t *MyGraphics[2];
    
      // define some vars
      int winwidth  = 100;
      int winheight =  70;
      double dtime  = 1.0f;
    
      int win;
      int APPEXIT = false;
    
      // create graphics 1
      if ( PT_SUCCES != pt_graphics_New (&MyGraphics[0], "eye L", winwidth, winheight,32,PT_GRAPHICS_OVALWINDOW
                                                                                   |PT_GRAPHICS_POPUP     )
         )
      return PT_ERROR;
    
      // create graphics 2
      if ( PT_SUCCES != pt_graphics_New (&MyGraphics[1], "eye R", winwidth, winheight,32,PT_GRAPHICS_OVALWINDOW
                                                                                   |PT_GRAPHICS_POPUP     )
        )
      return PT_ERROR;
    
      // adjust graphics (eye) position
      pt_window_SetPosition( MyGraphics[0]->pt_window,        0,0);
      pt_window_SetPosition( MyGraphics[1]->pt_window, winwidth,0);
    
      // set cls color for both graphics
      for (win=0;win<2;win++)
      { if (PT_SUCCES==pt_graphics_SetTarget (MyGraphics[win]))
        {
            pt_graphics_SetClsColor (225,225,235);
        }
      }
    
      // var for eyeopen value
      double eopen=winheight * 2;
    
      // last eye close
      int lclose=pt_utils_Millisecs();
    
      // state 0 = open, 1 = close
      int state=0;
    
      // we need it to control wether the spacekey is down
      int setpos=false;
    
      // it's only to play a round :) and in this case has it no effects
      int tired=0;
    
      // the APP loop
      while (APPEXIT == false )
      {
        // Check and Update Values and states
        if (state==0)
        eopen-=1.0*(winheight*.01)*dtime;
        else
        eopen+=2.0*(winheight*.01)*dtime;
    
        if (eopen< (winheight*.3)+tired)eopen=winheight*.3 + tired;
        if (eopen>winheight*1.5)state=0;
    
        // get Deltatime for 100 frames per Second ( i think it is buggy for the moment!)
        pt_utils_dtime(100,&dtime);
    
        // random eyeclose
        if(rand()*1< 5)
        if (state==0) {
              state=1;
              lclose=pt_utils_Millisecs();
    
          }
    
        // eyeclose after 4000 millisecs
        if(pt_utils_Millisecs()-lclose>4000)
        { if (state==0) {
              state=1;
              lclose=pt_utils_Millisecs();
              //tired+=25;
          }
        }
    
        // Get Global Mouseposition (not implemented in PT-Framework at the moment!)
        POINT gmouse;
        GetCursorPos(&gmouse);
    
        // save position to gmx and gmy
        int gmx=gmouse.x;
        int gmy=gmouse.y;
    
        // set graphics (eye) position
        if (setpos==true) {
        pt_window_SetPosition( MyGraphics[0]->pt_window,gmx-winwidth,gmy-winheight/2);
        pt_window_SetPosition( MyGraphics[1]->pt_window,gmx         ,gmy-winheight/2);
        }
    
        // setpos to false, if keyspace is down setpos would be set to true
        setpos=false;
        int wx,wy;
    
        // the graphics loop for each ceated window
        for (win=0;win<2;win++)
        {
          // set our Graphics(Window) as Target if succes do the other stuff
          if (PT_SUCCES==pt_graphics_SetTarget (MyGraphics[win]))
          {
    
          // clear the screen
          pt_graphics_Cls();
    
          // get the window position to calculate distance and angle between mousecoords
          pt_window_GetPosition( MyGraphics[win]->pt_window, &wx,&wy );
    
            /// some MATH ///////////////
            ///
    
            int px1=wx;
            int py1=wy;
    
            pt_vector2d_t v1;
            pt_vector2d_t v2;
    
            v1.coords[0]=wx+winwidth/2;
            v1.coords[1]=wy+winheight/2;
    
            v2.coords[0]=gmx;
            v2.coords[1]=gmy;
    
            pt_float dist = pt_vector2d_Distance ( v1,v2);
            pt_float angl = pt_vector2d_Angle    ( v1,v2);
    
            dist*=.66;
            if (dist>winwidth/4)dist=winwidth/4;
    
            pt_float eyex = -sin( angl)*dist;
            pt_float eyey = -cos( angl)*dist;
    
            eyex+=winwidth /2;
            eyey+=winheight/2 + winheight*.2;
    
            ///
            /// ///////////////////////////////////////////////////
    
          // Each graphics/window has own events !!
    
          // Check Key-Space
          if ( MyGraphics[win]->pt_window->closeevent
          || pt_graphics_StateKey (32) )
          setpos=true;
    
          // Check Key-Escape
          if ( MyGraphics[win]->pt_window->closeevent
          || pt_graphics_StateKey (27) )
          APPEXIT = true;
    
          // draw the stuff
          pt_graphics_SetColor (0,0,200);
          pt_graphics_DrawOval (eyex, eyey,winwidth/3,winwidth/3);
    
          pt_graphics_SetColor (0,0,00);
          pt_graphics_DrawOval (eyex,eyey,winwidth/8,winwidth/8);
    
          pt_graphics_SetColor (232,188,87);
          pt_graphics_DrawRect (00,00,winwidth,eopen);
    
          // flip the stuff from backbuffer to frontbuffer
          pt_graphics_Flip();
    
          }
        }
      }
    
      // free/destroy our windows
      pt_graphics_Free (MyGraphics[0]);
      pt_graphics_Free (MyGraphics[1]);
    
      return PT_SUCCES;
    
    }
    


  • Layered Windows ..... und die Spielereien die sich damit anstellen lassen 🙂

    http://www.c64.feuerware.com/page/viewtopic.php?f=39&t=75&p=95#p95

    Wer Ideen hat immer her damit 🙂 !!

    Man man man wat gammelt denn hier? Soviele Fliegen aufm Desktop ^^ 😃 !!


Anmelden zum Antworten