2D-Spiel Fragen und Hilfe bei Programmierung

Habt ihr ne gute Seite, wo OpenGL 4 erklärt ist? Ich wollte eigentlich noch Displaylisten verwenden, wenn die aber jetzt veraltet sind :schief:
Ausserdem sol ja das GL_BEGIN und END auch rausgeflogen sein, durch was wird das ersetzt?
 
Habt ihr ne gute Seite, wo OpenGL 4 erklärt ist? Ich wollte eigentlich noch Displaylisten verwenden, wenn die aber jetzt veraltet sind :schief:
Ausserdem sol ja das GL_BEGIN und END auch rausgeflogen sein, durch was wird das ersetzt?
Lass das lieber bleiben :schief:
Bei deinen paar Bällen ist es zum einen egal und außerdem hast du dann auch deine Matritzen nicht mehr! Dann kannst du das alles selber im Shader machen!
 
ich hatte mir die ogl super bibel gekauft ^^ da isses drin erklärt xD
aber is halt schon bissl schärfer :/ muss mich auch erst dran gewöhnen, aber die möglichkeiten rechtfertigens dann glaube schon ^^ bloß ein bestehendes projekt nochma neu aufziehn... das is ne sch**s arbeit >< ich hatte meins im endeffekt neu aufgezogen. bin auch noch lang ned fertig (arbeit aber nu au ned wien ochs da dran *zugeb* ^^).

das wird im übrigen durch buffer objects ersetzt. bei meinem einen codeschnipsel da im anderen thread (dynamische array erstellung, oder wie er hieß) haste das zum bsp. die generateBatch() methode erzeugt aus allen flächen daten die arrays und baut dadraus dann son vao (VertexArrayObject), was die metadaten quasi (is das jetz richtig? ^^) verwaltet. also alle vbo's und attribute bla unter einem hut zusammenfasst. und die vbo's (VertexBufferObject) sind die einzelnen punktdaten (punkte/vertizes, normalen, farben, texcoords).

im endeffekt behält dass dann die gpu alles in ihrem speicher un muss das ned jedesma erst ausm ram holen - so wie das die displaylisten halt auch gemacht hatten.
 
@AMD: Ich hab es mal mit deiner sprint Lösung probiert, da kommt ne komische Zahl raus.

Ich habs jetzt mit der ?Klasse? sstream versucht, da kommt immer ein Lauifzeitfehler:

PHP:
//Variablen zur Umwandlung und Speicherung 
string ausgabe = "";
char bild[20] = "";
stringstream puffer;
//Umwandlung und Zusammensetzung des Strings
puffer << "FPS: " << fps; 
ausgabe = puffer.str();

//String in Char umwandeln
for(unsigned x=0; x<=ausgabe.length(); x++)
{
bild[x] = ausgabe[x];
}

//Ausgabe
glColor3f(1,0,0);
glRasterPos2i(1, bbreite - 18); 
for(unsigned int i=0; i<=strlen(bild); i++)
{
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, bild[i]);
}

An was liegt das? Ist meine 2Lösung" umständlich oder geht es nicht kürzer?
 
Warum machst du es nicht so wie ich? ^^
Außerdem vergisst du was bei glutBitmapCharacter. Bei der Ausgabe musst du bild noch als (int) casten.


Zumal ich es komisch finde, dass du einen stringstream erstellst, es in einen string machst und dann ein char :D Nimm doch gleich char wie ich ^^

 
Du kannst übrigens mit Strings auch direkt den []-Operator verwenden, du musst nicht alles extra in ein Array kopieren.
 
So, jetzt gibts mal wieder eine Demo frisch aus der Entwicklung.

Änderungen: FPS- und Ballanzahlanzeige hinzugefügt.:daumen:

Könnt ja al schreiben, wie viel Bilder pro sekunde bei - sagen wir 10 Bällen, da sonst der Ruckel-Bug auftritt- euer PC schafft.

Ws denkt ihr, wieviel mir Displaylisten und ne externe Textbibliothek bringen werden? Mir fällt grad ein, dass ich die Konsole noch abschalten kann, die frisst laut Taskmanager au viel Leiszung.

Zum Bug: Denkt ihr dass ich ihn beheben kann, wenn ich alle Bälle nacheinander verschieb und die Kollision nach jedem Verschiebungsschritt prüfe? Ich könnte den Code dann umindest nicht mehr paralellisieren:schief:
 
10 Bälle = knapp über 1500fps.

Displaylisten bringen sehr viel. Du hast halt die Daten schon direkt auf der Grafikkarte und musst diese nicht bei jedem Frame neu vom CPU zur Grafikkarte rüberschicken ;)
Eine Externe Textbibliothek kann schon was bringen, zumal die glut Textausgabe schon nicht so schnell ist aber letztendlich finde ich das eher nicht so entscheident, oder hast du so viel Text, den du ausgeben willst?
Mit der Konsole verwechselst du glaube was ^^
Glut erstellt dir eine Konsole + Fenster aber das wird im Task-Manager als ein Prozess angezeigt. Wenn du also das Fenster entfernst, dann hast du immer noch den selben Prozess.

Achja, das könnte das Problem durchaus lösen. Die nicht vorhandene parallelisierung finde ich eher weniger schlimm, denn die macht ja eben dein Code anfällig für Bugs, da du eben nie weisst, wie sich die anderen Ballpositionen entwickeln
 
ganz ehrlich: solange du bei 1500fps rumgammelst bei einem recht "fertig"-nahen spiel... scheiss doch auf optimierung :ugly: also displaylisten als gute übung würd ich noch mitnehmen, aber bei der fpszahl kann man sich nu wirklich zu ner akurateren, aber aufwändigeren berechnung hinreissen lassen.
 
Aber ich nehme auch einen 2500k + HD5870 - bei einem Netbook sind es bestimmt deutlich weniger :P
So eine Displaylist ist ja schneller erstellt als man gucken kann :D
 
Und vor allem sind 1,5k Frames nicht viel. Ich komm mit ner ähnlichen Sachen, wo ich Quads zeichne und Texturiere auf 5k FPS :ugly: Und ich nutze KEINE! Displaylisten.
 
  • Like
Reaktionen: AMD
Zum Vergleich: Bei meinem Netbook sinds bei 10 Bällen 170 FPS.
Mich interessiert auch mal, wie sich die Displaylisten hier auswirken, da die APU keinen eigenen Grafikspeicher hat sondern den Ram nutzt.
Werd mal sehen, dass ich das heut implementiert bekomme.
 
So, ich hab jetzt mit den displaylisten geschafft, ist eigentlich garnicht so schwer.
Erstmal fett gestaunt, als bei meinem Netbook mit 10 Bällen 250 fps rtauskamen und es bei noch mehr Bällen einfach nicht weniger werden wollten:daumen:

Wäre schön, wenn ihr bei euch nochmal die Fps mit 10 und vll. ein paar mehr Bällen messen könntet, sind immerhin gute 50% mehr Leistung, bei mehr Bällen noch viel mehr!!!:daumen:

Sowas zu optimieren macht irgendwie am meisten Spaß :)
 
Des is komisch, da tut irgendwas noch limitieren. Das Berechnen der Kollision nimmt fast keine Leistung in Anspruch, das muss was anderes sein. Ich erklär das Demo-Projekt hiermit erstmal für abgeschlossen, da ich einfach keine Lösung für den Getümmel-Bug (bei vielen Bällen gibts Überlappungen) finde. Damit ist der 2.Meilenstein vollkommen komplett und ich widme mich jetzt dem eigentlichen Spiel, da brauch ich ja auch nich so viele Bälle.


Mal nebenbei: Habt ihr schonmal von C++ AMP gehört? Das scheint ein Versuch seitens Microsofts zu sein DirectX weiter zu Verbreiten:schief:
 
C++ AMP ist sowas wie opencl oder cuda, nur läuft es halt über DirectX bzw. dx-fähige Hardware. Hat mit Grafik bzw. Spiele also erst einmal nichts zu tun. Naj, ich seh für mich zumindest keinen Grund zu wechseln, zumal ich mehr mit Linux zu tun habe.
 
Ich hab mir jetzt ein neues Projekt in der Projektmappe angelegt.
Wie kann ich die .cpp und .h Dateien aus dem vorherigen Projekt verwenden? Einfach kopieren funktioniert nicht:(
 
Du musst die am besten im Explorer kopieren (also wie normale Dateien) und dann bei Visual Studio im Projektmappenexplorer auf bestehendes Element hinzufügen klicken (unter dem "Neues Element hinzufügen" Eintrag).
 
Zurück