Sry für den komischen Threadnamen, aber mich beschleicht jedesmal ein unwohles gefühl wenn ich einen neuen Thrad aufmache deswegen denke ich werde ich alle meine Fragen hier rein Posten!
So die Ersten Fragen: Ich habe inzwischen mit überlegt das ich Meine 6Eck Felder als ein großen "Curved Surface" zusammenfasse, was für die Performance sicher nicht schlecht ist und wahrscheinlich auch ein besseres Ergebniss bringt!
Leider habe ich jetzt 2 neue Probleme:
1.) Ich möchte einzellne Felder Selektieren können, da diese aber zu einem großen Feld zusammengefasst werden kann ich mit Einzellselection nichts Anfangen, wäre es möglich ein Virtuelles Feld zu definieren, wo der user dann draufklicken kann?
2.) Ich möchte das Feld mit verschiedenen Texturen belegen, blending wird mir da vermutlich auch nicht viel nützen. Deshalb die Frage: Wie kann man Texturen auf ein Surface legen ohne dieses Nocheinmal Rendern zu müssen(Was bei vielen Texturen und Feldern ja dann zu einem riesigen Rechenaufwand führen würde!
danke für die Zeit!
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Registriert: Mi Dez 15, 2004 20:36 Beiträge: 454 Wohnort: Wien, Österreich
Zitat:
Wie kann man Texturen auf ein Surface legen ohne dieses Nocheinmal Rendern zu müssen(Was bei vielen Texturen und Feldern ja dann zu einem riesigen Rechenaufwand führen würde!
Ganz einfach. Niergendwie.
Wenn du das Ergebnis von irgend einem OpenGL-Befehl sehen willst, dann musst du es unbedingt Rendern, egal wo.
_________________ "Meine Mutter sagt : 'Dumm ist der, der Dummes tut'." - Forrest Gump
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Hatte beide Probleme auch schon mal. Zum ersten muss ich sagen, dass ich noch keine Lösung gefunden habe, da eine Selektion leider nur auf eine komplette Displaylist anzuwenden ist. Wenn die Selektion nicht so oft ausgeführt werden kann, dann machs so, dass normalerweise immer eine Displaylist gerendert wird, und nur wenn der User klickt, dann die einzelnen Sechsecke wählbar gerendert werden.
Zum zweiten: Mach es entweder per Multitexturing. Wir haben dazu ein Tutorial und es kostet auf den heutigen Grafikkarten kaum mehr Power. Oder du programmierst dir einen Fragemntshader, der die Textureunits kombiniert. Läuft aber insgesamt auf Multitexturing hinaus.
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
Wie kann man Texturen auf ein Surface legen ohne dieses Nocheinmal Rendern zu müssen(Was bei vielen Texturen und Feldern ja dann zu einem riesigen Rechenaufwand führen würde!
Ganz einfach. Niergendwie. Wenn du das Ergebnis von irgend einem OpenGL-Befehl sehen willst, dann musst du es unbedingt Rendern, egal wo.
Hmm vielleicht habe ich mich falsch ausgedrückt, wenn ich die 6Ecken einzelln Rendere dann muss gibt es denke ich mal um einiges mehr an Rechenaufwand!
Wäre das mit der Selektion nicht Mithilfe von Koordinaten und Vectoren möglich? Damit meine ich dass ein Virtueller Schuss auf ein Virtuelles Feld abgegeben wird!
Frage zu Multitexturing: Ich weiss nicht ob es dasselbe Tutorial ist aber wenn du Verblendet meinst dann glaube ich geht das bei CurvS nur bei den 4 Ecken anzuwenden was ja nicht der zweck der Sache wäre.
Mit Shader wüsste ich wie man es macht allerdings offenbart sich mir dabei die Frage wie ich die Textur erzeuge die Aus verschiedenen Farben besteht um das ganze dann zu Rendern(Das ganze sollte einmal berechnet werden und wird erst neu berechnet wenn der User den Sektor wechselt)!
Edit: Kann man bei der Selection nicht mit Blending ein Voll Durchsichtiges Feld erzeugen ohne groß an Performance zu verlieren?
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Also ich habe deine Frage zwar nicht so richtig verstanden aber ich habe die Hoffnung, dass ich nicht ganz falsch liege.
Selektion: Die finden von dem restlichen Zeichnen vollkommen losgelöst statt. Das was als Bild zu sehen befindet sich im Frontbuffer und bei der Selektion werden gesonderte Informationen gesammelt. Wie das Technisch abläuft weiß ich nicht 100%tig. Will ich aber auch gar nicht. Du kannst aber auf jeden Fall für deine Selektion etwas vollkommen anderes Rendern. So kannst du zum Beispiel deine Flächen in der normalen Darstellung mittels eines Primitives rendern wärend du dafür in der Selektion 6 nimmst. Texturen werden von OpenGL wärend der selektions sowieso ignoriert also solltest du sie gleich weglassen. Du brauchst wärend der Selektion nicht einmal farben setzen. Das wichtigste ist der Name und die Fläche an sich.
Multitexturing: Es gibt mehrere Möglichkeiten mehr als 1 Textur auf eine Fläche zu bringen. Das eine sind mehrere Passes (durchläufe) Und dort wird mit Blending gearbeiten oder eben halt richtiges Multitexturung. Dort werden zur gleichen Zeit X Texturen auf eine Fläche berechnen. Und zwar ohne, dass es der Grafikkarte viel Arbeit verlangt. Moderne Karten können 8 Texturen gleichzeitig. Wenn nicht sogar schon noch mehr.
Sofern dafür die normalen Blendmodies ausreichen würde ich noch nicht zu einem Fragmentshader greifen. Das ist wie mit den Spatzen und den Kanonen. Wobei der Haupteinsatz dann immer in Richtung Bumpmapping oder ähnliches geht. Und dann hat man kaum eine andere Wahl als Shader. Aber zum Darstellen von Gras auf einer Sand oder Steinfläche genügen normal 2 Texturen und auch ganz simples Multitexturing.
Registriert: Fr Mai 14, 2004 18:56 Beiträge: 804 Wohnort: GER/OBB/TÖL-WOR/Greiling
selektion:
wenn du durch gluunproject deine 3d-mausposition rauskriegst, kannst du ja außerhalb von opengl entscheiden, auf welcher fläche deines sechsecks du dich befindest(vielleicht brauchst du da nur x und y, wenn die koords deines 6ecks immer gleich bleiben). dann musst du nur noch dieses dreieck(das wars doch, oder?) anders rendern und eine globale variable auf den index deines dreiecks setzen.
ps: was mir noch schleierhaft ist: wieso braucht man 3 fensterkoordinaten für gluunproject? da ist wohl noch mal ein profi gefragt...
Obwohl mein Project im Moment etwas zu ruhe kam habe ich ein gerücht gehört:
Man kann in OpenGL nur max 512x512 er Texturen verwenden, stimmt dieses Gerücht? Gibt es Aussicht auf eine Änderung, oder gibt es eine Lösung um dieses Problem zu umgehen?
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Das stimmt so nicht ganz. Nach oben hin ist man schon beschränkt, hängt ab von der Grafikkarte und dem installierten Treiber ab, OpenGL selber hat da glaub ich nicht viel mitzureden. Meine Geforce 6600 GT unterstützt maximal 4096x4096 Pixel. Das kannst du ganz einfach mit glInfo von Tom Nuydens (www.delphi3d.net) auslesen.
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
Registriert: Sa Mai 04, 2002 19:48 Beiträge: 3830 Wohnort: Tespe (nahe Hamburg)
Ja, wie Du sagtest, es sind blödsinnige Gerüchte von Leuten mit zu wenig Wissen. Fakt ist, 2er-Potenzen sind das Optimum, die meisten aktuellen karten haben Ihre Schmerzgrenze momentan IMAO bei 4096x4096 (viel größer macht wohl auch momentan kaum Sinn). Evtl. gibt es Probleme bei sehr alten Grafikkartetreiber, dass diese nicht mit größeren Texturen klar kommen, aber wir reden hier nicht von ATI oder NV, sondern von irgendwelchen alten MatroxMystickarten aus Anfang der 90er. Nicht auf 2er-Potenzen basierende Texturen sind ebenfalls möglich, wenngleich ich bezweifel, dass es da nicht doch einen Performance-Haken gibt. Letztendlich ist also wohl der RAM auf der Videokarte der entscheidende Faktor, wie groß die Textur sein darf (und wieviele Dimensionen *g)
_________________ "Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."
Mitglieder in diesem Forum: 0 Mitglieder und 6 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.