Ich würde gerne wissen, ob das so Standard ist ?!
Ich hab mir leider die Tutorials nicht angeschaut, aber wom Konzept her müsste es passen ( denke ich mal )
PS: Das ist kein Projekt im Sinne Freeware/Fertiges Programm/Spiel...
NUR --> Lernzweck
Projekt angehangen !
EDIT: Irgendwie geht das mit Attachment hinzufügen nicht EDIT2: Push ! Nun gehts ! Die Dateien waren angeblich zu groß. Vorhin, als ich aber uppen wollte, kam keine Meldun !
EDIT3: Hab mich gestern ein wenig rumgespielt --> gibts was neueres !
MfG
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
_________________ ...GOD is wearing black...
Zuletzt geändert von Emre am Di Jul 22, 2008 18:54, insgesamt 2-mal geändert.
Schau dir mal bitte das Debugger-Tutorial an. Wenn du das Projekt mit Einzelschritten durchläufst, wirst du merken, dass nach dieser Zeile zu viele Exceptions geschmissen werden.
Wie schaffe ich es, dass die Framerate nicht so sehr absackt?
EDIT:
Meine Idee wäre:
Alles was im Blickfeld ist, wird gerendert und sonst nichts
OK hat sich erledigt.. hab frustrum & octree tuts gefunden.. ich sollte lieber vorher suchen bevor ich schreibe
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Als erstes mal etwas in eigener Sache. Wenn du dein Thema puschen willst, dann solltest du ein neues Post verfassen. Wenn du deinen Beitrag editierst ändert sich rein gar nichts an dessen neu oder bereits gesehe status. Wenn also jemand das Thema schon gesehen hat bekommt er von solchen Editierereien rein gar nicht mit. Besonders, wenn die Zeitspanne 2,5 Tage beträgt...
Zur Heightmap. Was ist schon ein Standard? In der Programmierungs gibt es nichts wirklich allgemeingültiges. Standards beziehen sich eher auf Schnittstellen die aus technischen Gründen nicht verändert werden dürfen/sollten. Techniken allerdings werden dauerhaft überarbeitet und verbessert. Einige Dinge die früher noch einen wirklich großen Ausschlag gegeben haben sind heutzutage mitunter sogar hinderlich.
Aber hier ein paar Anmerkungen von mir.
- Bitte benutze keine fixen ID für irgendwelche OpenGL Objekte. Ja ich weiß es geht und es ist legal. Aber wenn du irgendwann mal welche dynamisch erstellst und dich vertust überschreibst du was. Deswegen würde ich immer die Gen Funktionen von OpenGL benutzen. Also zum Beispiel glGenLists.
- So wie du die Heightmap zeichnest ist es nicht verwunderlich, dass es nicht so schnell ist. Denn du zeichnest im Imediate mode. Und du bindest für jedes Quad eine Textur. Also du unterbrichst nach jedem Quad das Zeichnen um eine Textur zu binden. Aktuelle Grafikkarten sind auf die Verarbeitung von großen Datenmengen spezialisiert. Entsprechend freuen die sich, wenn man sagt. Hier sind 2 Mio Dreiecke und nun mach mal. Und für große Datenmengen ist das einzig sinnvolle diese Daten auf der Grafikkarte abzulegen. Dann kann sie besonders schnell darauf zugreifen. Dafür sind Vertex Buffer Objects gedacht.
- Die Texturen. Einige ältere System haben Probleme damit, wenn die Texturen keine Potenz von 2 haben. Und 120 ist keine Potenz von 2. 128 wäre besser. Aber in der Konstellation wie du das gemacht hast kommt noch etwas anderes hinzu. Du Bindest für jede Fläche eine eigene Textur. Du hast also massig unnötige Texturwechsel. Und das auf jedem Quad die Textur vollständig dargestellt wird finde ich auch etwas unglücklich. Da würde ich dir eher zu so etwas wie dem Terrain Texture Generator von Sascha Willems (http://www.saschawillems.de/?page_id=92) raten. Damit kannst du eine Textur erstellen die alle deine Kleinen enthält und auch noch Schatten erzeugen kann. Diese Textur musst du dann über deine ganze Heightmap legen. Damit hast du keine Texturwechsel mehr. Einen weichen Überlauf zwischen den Schichten und sogar noch den Eindruck als ob du Sonne hättest.
Für Details in deiner Nähe werden normalerweise Detailmaps benutzt. Diese erzeugen nur eine Struktur auf einem recht detailarmen Untergrund. Aber das wird nur in der nähe des Betrachters gemacht. Wie so etwas genau geht weiß ich aber nicht genau.
PS: Um nicht ständig die komplette Heightmap zeichnen zu müssen kann man das VBOs aber auch noch in kleinere zerteilen und diese dann mit einem Quadtree in sichtbare und unsichtbare Teile zerlegen. Aber diese Teile dürfen nicht zu klein sein. Sonst geht der Vorteil davon wieder verlohren.
PPS: Ich persönlich denke aber, dass der Trend in Spielen aber eh in die Richtung der komplett designten Landschaften geht. Also keine Landschaft die Mittels Heightmap erstellt wurde sondern die komplett in einem 3D Programm (World Editor) erstellt wurde. Da typischerweise in Spielen auch noch Gebäude und Wege vorhanden sind.
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
In der Regel wird das Terrain mit einen Mesheditor gebaut, unzwar nutzt man dort eine Heightmap, um das terrain grob zu erstellen und dann fängt man an die einzelnen Zellen, woran man Häuser oder ähnliches bauen will, nach zu bearbeiten.
Viel größere Probleme machen aktuell die Texturen, diese sind teilweise echt schlimm.
Da man mit den Höheninformationen nicht so genau arbeiten kann, sehen auch generierte Texturen nicht so prikelnd aus.
Steile Hänge bekommen dann z.B. nicht ihre zustehende Texturgröße, sondern nur den drauf projezierten Texturplatz und der ist klein.
Ideal sind darum Texturgeneratoren, die erst nach der erstellung des Meshes und anhand der Normals,Vertice die Texturen erstellen.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.