Vereinfachte Klasse für Zeichnen in 2D (OpenGL)

  • Hey Leute,
    ich habe mal zur Übung eine Klasse geschrieben, mit der man ohne größeren Aufwand Zeichnen kann.

    Die Syntax ist wie folgt:

    Code
    glEasyDraw myDraw; //Die Klasse, kann auch sonstwie heißen
    //Befehle zur Koordinatenänderung
    myDraw.ChangeCoords(rect, X1, Y1, X2, Y2);
    myDraw.ChangeCoords(triangle, X1, Y1, X2, Y2, X3, Y3);
    myDraw.ChangeCoords(line, X1, Y1, X2, Y2);
    //Befehle zum zeichnen
    myDraw.Draw(rect, rColor, gColor, bColor, Alpha);
    myDraw.Draw(triangle, rColor, gColor, bColor, Alpha);
    myDraw.Draw(line, rColor, gColor, bColor, Alpha);
    //Farbe muss nicht dabei sein, standard ist WEIß

    ToDo:

    • Texturen
    • Rotation


    Done:

    • Alpha-Channel
    • ENUM statt C-Strings
    Versionen


    -Namenlos- Ursprungsversion
    1.1 - Alpha Channel hinzugefügt
    1.2 - ENUM statt char* für Draw & Initialisierung, Syntax-Änderung



    Vorschläge für ToDo bitte reinschreiben - Freue mich über Kritik & Verbesserungen :)
    MfG - Xorianator

  • Weiter so, das ist super um C(++) zu lernen. Hier gleich ein paar Tipps:
    - Du musst zum Vergleich von C-Strings aber strcmp / stricmp verwenden und keine ==-Operatoren. (Vielleicht wären erst mal ein paar Stunden Basiswissen C gar nicht übel bevor du mit C++ einsteigst ;) )
    - Wenn du sauber programmieren willst, erstellst du eigene Methoden für die unterschiedlichen Objekte. Ein universelles Interface mit Switch kannst du immer noch zusätzlich einbauen.
    - Verwende aussagekräftige Variablennamen, vor allem für Klassenvariablen. Da weißt du sonst in neuen Methoden nicht mehr, welche Variable du jetzt nutzen willst.

  • Jey, danke für die Kritik; welchen Namen findest du denn nicht aussagekräftig ?
    strcmp / stricmp suchte ich, danke :D
    Wie meinst du das eigtl mit "eigee Methoden für Objekte" ?
    Und zu switch: Das funktioniert niht bei strings, da geht doc nur mit Zahlen ?
    MfG

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • Hi,

    Jey, danke für die Kritik; welchen Namen findest du denn nicht aussagekräftig ?


    rX, tX, ... Da wäre eventuell eine Benennung wie "anRectX" oder so sauberer und schneller verständlich ;) (array, number, Name)
    Übrigens fände ich es schön, wenn du hier Strukturen wie POINT und RECT verwenden würdest. Damit bekommst du eine bessere semantische Bedeutung.

    Zitat

    Wie meinst du das eigtl mit "eigee Methoden für Objekte" ?


    ChangeCoordsRect, ChangeCoordsLine, DrawRect, DrawLine, ...

    Zitat

    Und zu switch: Das funktioniert niht bei strings, da geht doc nur mit Zahlen ?


    Ich wollte nicht sagen, dass du switch verwenden sollst. Ich habe einfach deine if/elseif-Logik gemeint

  • Ist dem nicht so, das ich ElseIf verwende ?
    Dann hab ich das wohl aus der alten Klasse vergessen zu übernehmen ;D

    Eigene Methoden ...
    Ja das wäre möglich, sicherlich auch schneller :D

    Ich setz mich dran wenn ich in 1/2 h am PC bin :)

    Aver: Danke für die Kritik & Verbesserungsvorschläge :)

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • Stimmt, ENUM hatte ich ganz vergessen :D
    (Das ist tatsächlich viel besser :D, danke :))

    €: 1.2 mit ENUM für glEDT (glEasyDrawType) ist jetzt da ;)

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

    Einmal editiert, zuletzt von Xorianator (14. Februar 2012 um 18:35)

  • Ops, mein Fehler, ist in 2 - 3 min (die nach dem Post kommen) korregiert :)
    Danke für deine Meinung :D

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • tolle Idee so´ne Klasse...aber wie is`n das...es fehlt doch die glut.h section...könnte mir die mal einer herreichen...das wär echt toll


    PS: ihr könntet ja mal hier vorbei schauen, wer interesse hat, ich bin colt - http://level-designer.de (kein böses blut bitte, is nich meine seite...is nur nichts mehr los)


    grüße hAYX