Registriert: Sa Aug 18, 2007 18:47 Beiträge: 694 Wohnort: Köln
Programmiersprache: Java
Ständig eine andere Textur zu binden wird aber sehr stark auf die Performance drücken. Du könntest zur Laufzeit (beim Start der Anwendung) aus den vorhandenen Texturen einen Texturatlas zusammenbauen. Dann brauchst du nur einmal pro Renderdurchlauf die Textur binden. Man muss dann nur beim Mipmapping aufpassen, dass die benachbarten Textur-Tiles keinen Rand in der anderen Textur hinterlassen.
_________________ Es werde Licht. glEnable(GL_LIGHTING); Und es ward Licht.
Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"
Registriert: Mi Apr 13, 2011 22:05 Beiträge: 218
Programmiersprache: Lazarus/FPC
Zitat:
Ständig eine andere Textur zu binden wird aber sehr stark auf die Performance drücken. Du könntest zur Laufzeit (beim Start der Anwendung) aus den vorhandenen Texturen einen Texturatlas zusammenbauen. Dann brauchst du nur einmal pro Renderdurchlauf die Textur binden. Man muss dann nur beim Mipmapping aufpassen, dass die benachbarten Textur-Tiles keinen Rand in der anderen Textur hinterlassen.
So ganz versteh ich die Idee mit dem Texturatlas nicht. Aber ich glaub die Texturen werden sicher nicht die Performance drücken. Jeder Block wird...gleich nach der Erstellung nachdem er das erste mal gerendert wurde in eine Display-List (ja ich bevorzuge die noch den VBOs) gespeichert, die dann immer aufgerufen wird. Also berechnet er nur einmal die Texturkoordinaten, und den Rest auch, ab dann wird nur mehr aus dem Grafispeicher gelesen. Beim Texturwechsel wird nur eine neue Textur eingebunden...Block gerendert und wieder ab in die Display-List gesteckt.
Zitat:
Wird es später möglich sein richtige Schrägen zu bauen? Das ist etwas das ich in Minecraft vermisst habe. Und das nach sehr kurzer Spielzeit.
Definitiv JA! Ist von Anfang an eingeplant gewesen!
_________________ Ich teile manchmal heimlich durch Null. - Alber Einstein
Registriert: Sa Aug 18, 2007 18:47 Beiträge: 694 Wohnort: Köln
Programmiersprache: Java
Zitat:
So ganz versteh ich die Idee mit dem Texturatlas nicht.
Mal als Beispiel ein Texturatlas aus einem Minecraft Texturepack: Bild
Zitat:
Aber ich glaub die Texturen werden sicher nicht die Performance drücken.
Werden sie. Du kannst es ja einfach ausprobieren indem du ein Schachbrett generierst, aber nicht mit 64 Feldern sondern ein paar mehr. Und dabei ständig die Textur wechselst.
Zitat:
Jeder Block wird...gleich nach der Erstellung nachdem er das erste mal gerendert wurde in eine Display-List (ja ich bevorzuge die noch den VBOs) gespeichert, die dann immer aufgerufen wird. Also berechnet er nur einmal die Texturkoordinaten, und den Rest auch, ab dann wird nur mehr aus dem Grafispeicher gelesen.
Wieso landet der Block erst nach dem Rendern in der Displayliste? Wieso landet nur ein Block in der Displaylist?
Zitat:
und wieder ab in die Display-List gesteckt.
Was soll das heissen?
_________________ Es werde Licht. glEnable(GL_LIGHTING); Und es ward Licht.
Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"
Registriert: Mi Apr 13, 2011 22:05 Beiträge: 218
Programmiersprache: Lazarus/FPC
Zitat:
Wieso landet der Block erst nach dem Rendern in der Displayliste? Wieso landet nur ein Block in der Displaylist?
Wenn du einen Block veränderst muss nur dieser aus der Display-List geholt werden und nicht alle auf einmal. Hat schon seinen Sinn.
Zitat:
Was soll das heissen?
Naja, wenn ein ein Block aus eine neue Textur bekommt muss sollte man den Block erneut rendern, mit den neuen Textureinstellungen....und da wird er in eine Display-list geschrieben die dann von dem Zeitpunkt an wieder zum Rendern benutzt wird. Solltest du ihn gleich weiterhin als Display-List anzeigen wird er weiterhin die alte Textur rendern und die neue nicht übernehmen.
_________________ Ich teile manchmal heimlich durch Null. - Alber Einstein
Etwas verwirrend. Was meinst du mit "aus der Displaylist holen"? Soweit ich weiß, sind Displaylisten nicht mehr veränderbar, wenn sie einmal generiert werden. Oder verwirfst du die Displaylist und erstellst sie neu?
Mir ist aufgefallen, wenn man innerhalb der großen Blöcke einen kleineren setzt und dann darauf einen großen setzen will, er sehr häufig links oder rechts vom eigentlichen Block einen neuen erzeugt. Das ist irgendwie komisch. Kann das sonst noch mit Screens erläutern.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Sieht soweit schon richtig gut aus, aber an der Physik musst dun unbedingt noch Arbeiten. Zum einen kann man nicht weich an Rändern entlangleiten (wie z.B. an Wänden in normalen Spielen) und ihc kann hier oft durch Blöcke durchrennen und fall permanent irgendwo durch den Boden. Da wärs evtl. ne gute Idee auf eine Physikengine wie Newton umzusteigen.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
.o(linux port?)
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Mi Apr 13, 2011 22:05 Beiträge: 218
Programmiersprache: Lazarus/FPC
Zitat:
Mir ist aufgefallen, wenn man innerhalb der großen Blöcke einen kleineren setzt und dann darauf einen großen setzen will, er sehr häufig links oder rechts vom eigentlichen Block einen neuen erzeugt. Das ist irgendwie komisch. Kann das sonst noch mit Screens erläutern.
Das liegt ganz einfach daran das die Blöcke bei fixer Größe fixe Positionen haben. Baust du nun einen ganz kleinen Block auf den Boden kannst du da nicht direkt einen viel größeren draufbaun. Der müsste entweder auch auf dem Boden stehen, oder in der Höhe seiner Größe, da wäre es auch möglich den zu platzieren. Aber nicht direkt auf den kleinen Block weil das einfach nicht seine Position ist. Darum wird die Erkennung dann auf die Seite oder manchmal auch nach oben verlagert und dort ein Block hingepflanzt.
Zitat:
.o(linux port?)
Ich glaub da muss ich dich enttäuschen, das wirds sicher nicht so schnell geben. Ausser das Spiel wird zufällig so ein Bombenerfolg (was ich aber mal aussschließe) wie Minecraft^^
Zitat:
an der Physik musst dun unbedingt noch Arbeiten.
Ouuuuh, wem sagst du das. Die Physik zu schreiben war noch nie meine Stärke. und Einbinden von Physic-Engines auch noch nie
_________________ Ich teile manchmal heimlich durch Null. - Alber Einstein
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Ida hat geschrieben:
Zitat:
.o(linux port?)
Ich glaub da muss ich dich enttäuschen, das wirds sicher nicht so schnell geben. Ausser das Spiel wird zufällig so ein Bombenerfolg (was ich aber mal aussschließe) wie Minecraft^^
Hm. Gibts irgendeinen grund das nicht OpenSource zu machen? Dann bestehen chancen dass $irgendwer das für dich portiert. Vorhandene Versionskontrolle vorrausgesetzt.
grüße
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Mitglieder in diesem Forum: 0 Mitglieder und 5 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.