3d game mit 3d brille /°°\
Das ist ein bisschen der Pferdefuß das stimmt.
Wenn ich dich richtig verstanden habe, willst du drei verschiedene Zustände eines Pixels:
- komplett rot
- komplett grün
- halb rot / halb grün
Keine "Zwischenmischungen".
Wenn du bei deinem Spiel weißt welche Wände die zwei vordersten sind könntest du nur die darstellen.
Ansonsten musst du wohl was pixelgenaues über Memory machen.
Wenn ich dich richtig verstanden habe, willst du drei verschiedene Zustände eines Pixels:
- komplett rot
- komplett grün
- halb rot / halb grün
Keine "Zwischenmischungen".
Wenn du bei deinem Spiel weißt welche Wände die zwei vordersten sind könntest du nur die darstellen.
Ansonsten musst du wohl was pixelgenaues über Memory machen.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
du wirst um pixelmanipulation nicht herum kommen.
du kannst im grunde jede der 255 helligkeiten in jedem kanal verwenden,
wichtig ist nur, dass rot und grün gemischt werden.
das geht im grunde einfach,
da du für jedes pixel ja die farbkanäle unabhängig setzen könntest.
aber da die DirectDraw implementation kein OR besitzt (nur ein XOR)
wirst du auf BitBlt zurückgreifen müssen.
mit sprites sehe ich keine schnelle lösung.
im grunde müsstest du zwei getrennte bilder zeichnen.
jedes mit grauwerten von 0-255.
dann musst du beide bilder übereineinder in einen buffer mischen,
eines nur in den rotkanal, eines nur in den grünkanal,
ohne das ein kanal den anderen löscht.
sowas kann man vielleicht mit BitBlt lösen (API),
damit kenn ich mich nicht so aus.
ich mein, das in reinen ASM-routinen zu hacken, wäre nicht die schwierigkeit,
aber heutzutage macht man sowas alles über DirectX,
weils schneller ist als ASM durch den Grafikbus gepresst.
du kannst im grunde jede der 255 helligkeiten in jedem kanal verwenden,
wichtig ist nur, dass rot und grün gemischt werden.
das geht im grunde einfach,
da du für jedes pixel ja die farbkanäle unabhängig setzen könntest.
aber da die DirectDraw implementation kein OR besitzt (nur ein XOR)
wirst du auf BitBlt zurückgreifen müssen.
mit sprites sehe ich keine schnelle lösung.
im grunde müsstest du zwei getrennte bilder zeichnen.
jedes mit grauwerten von 0-255.
dann musst du beide bilder übereineinder in einen buffer mischen,
eines nur in den rotkanal, eines nur in den grünkanal,
ohne das ein kanal den anderen löscht.
sowas kann man vielleicht mit BitBlt lösen (API),
damit kenn ich mich nicht so aus.
ich mein, das in reinen ASM-routinen zu hacken, wäre nicht die schwierigkeit,
aber heutzutage macht man sowas alles über DirectX,
weils schneller ist als ASM durch den Grafikbus gepresst.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
also mache ich das jetzt so:
ich habe 2 buffer (screen) und zeichne rot bzw grün darauf.
und auf meinen richtigen bildschirm gucke ich was pixel 1 bei rot ist und bei grün ist und mische das dann.
problem: da ich auflösungen von 800 * 600 oder höher nutze wird das verdamt lange dauern! hmm geht das echt nicht schneller?
@ PB-Programmierer
in der nächsten version bitte einbauen^^
ich habe 2 buffer (screen) und zeichne rot bzw grün darauf.
und auf meinen richtigen bildschirm gucke ich was pixel 1 bei rot ist und bei grün ist und mische das dann.
problem: da ich auflösungen von 800 * 600 oder höher nutze wird das verdamt lange dauern! hmm geht das echt nicht schneller?
@ PB-Programmierer
in der nächsten version bitte einbauen^^
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
nuja, also im grunde machst dus ja schon wie ich gesagt habe mit 2 getrennten buffern für die beiden farben.
informier dich halt mal über BitBlt, damit solltest du in der Lage sein, die bits schneller zu manipulieren.
notfalls kann man ne ASM-routine stricken, die diese operation im Hauptspeicher abwickelt.
dann eine 800x600 bitmap an die Graka rüberschieben ist zwar auch nicht megaschnell,
aber schneller als mit Point() und Plot(), das kannst du generell vergessen.
informier dich halt mal über BitBlt, damit solltest du in der Lage sein, die bits schneller zu manipulieren.
notfalls kann man ne ASM-routine stricken, die diese operation im Hauptspeicher abwickelt.
dann eine 800x600 bitmap an die Graka rüberschieben ist zwar auch nicht megaschnell,
aber schneller als mit Point() und Plot(), das kannst du generell vergessen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
geil!! ich glaube ich habe eine lösung...
also ich male direckt auf einen sprite und wenn alles fertig ist, dann mache ich den sprite erst halbtransparent...
genial oder?
also nicht jede wand einzelnt sondern erst die rote kamera dann die blaue oder grüne und wenn beides fertig ist dann halbtransparent übereinander.
xD THX für alle posts!! ihr habt mich erst auf die idee gebracht!

also ich male direckt auf einen sprite und wenn alles fertig ist, dann mache ich den sprite erst halbtransparent...
genial oder?
also nicht jede wand einzelnt sondern erst die rote kamera dann die blaue oder grüne und wenn beides fertig ist dann halbtransparent übereinander.
xD THX für alle posts!! ihr habt mich erst auf die idee gebracht!






Hallo, wenn ich das richtig verstanden habe, willst Du mit einem Auge den Rotanteil sehen und mit dem anderen Auge den Grünanteil. Außerdem soll es verschiedene Helligkeiten, Sättigungsgrade, o.ä. der Farben geben. Soweit richtig?
Falls ja hast Du das Problem, das die Brille bloß eine bestimmte Wellenlänge des Lichts durchlässt. (Je EINEN Rot- und Grünton) Du kannst also nur zwei Farben für die dreidimensionale Darstellung benutzen...
Ich wollte Dich nicht entmutigen...
Falls ja hast Du das Problem, das die Brille bloß eine bestimmte Wellenlänge des Lichts durchlässt. (Je EINEN Rot- und Grünton) Du kannst also nur zwei Farben für die dreidimensionale Darstellung benutzen...
Ich wollte Dich nicht entmutigen...
scheisse du hast recht. aber wenn ich ein dunkles rot für die brille nutze dann geht das helle rot doch auch nicht dadurch oder?
hmm
habe mir gedacht mit texturen und so wird das ein geiles feeling.
es kommt einen dann vor, als wär man im game...
naja ich werde es mit texturen versuchen sollte es nicht gehen dann mache ich halt einheitliche wände.
achja ich habe noch eine frage:
wenn ich auf einen pixel rot und grün habe dann sieht das auge ja eine andere farbe. läst die brille das jetzt durch oder zeigt es nur das grüne an?
mfg Brügge
hmm
habe mir gedacht mit texturen und so wird das ein geiles feeling.
es kommt einen dann vor, als wär man im game...
naja ich werde es mit texturen versuchen sollte es nicht gehen dann mache ich halt einheitliche wände.
achja ich habe noch eine frage:
wenn ich auf einen pixel rot und grün habe dann sieht das auge ja eine andere farbe. läst die brille das jetzt durch oder zeigt es nur das grüne an?
mfg Brügge
Die (älteren) 3D-Brillen mit rot-grün funktionieren so, dass man rechts/links unterschiedliche Seheindrücke hat. Diese eindrücke sind räumlich etwas versetzt. Dadurch entsteht im Gehirn ein dreidimensionales Bild. Die Brillen filtern eine bestimmte Wellenlänge des Lichts heraus. Mit der roten Seite siehst Du den grünen Anteil und umgekehrt. Aber halt nur eine Farbe. Andere Grüntöne werden auf beiden Seiten gesehen. Dadurch geht dann die Dreidimensionalität flöten.
Die neueren Brillen (momentan Kabel1 glaub' ich...) funktionieren anders. Die Farben bei der Brille sind ja nicht so "extrem". Hier ist es so, dass eine Farbe im Gehirn langsamer verarbeitet wird, als die der anderen Seite. Man hat also auch zwei unterschiedliche Seheindrücke, welche das Gehirn zu einem dreidimensionalen Bild vereint. (Funktioniert daher nur, wenn im Bild Bewegung herrscht. Rechts --> Links und umgekehrt...)
Für den Computer wäre es ideal, eine LCD-Shutter-Brille zu haben. Abwechselnd wird immer eine Seite abgeblendet. Gleichzeitig wird am Computer ein Wechsel von leicht räumlich versetzten Bildern gezeigt. Ist aber recht teuer und unhandlich. Kopfschmerzen sind auch keine Seltenheit...
Am einfachsten scheint es zu sein, mit der Rot-Grün-Brille zu arbeiten. Da wäre Vektorgrafik wie bei Elite aufm C64 (keine ausgefüllten Flächen) am tauglichsten. (Schwarzer Hintergrund und räumlich versetzte rote und grüne Grafiken.) Ich meine, dass es mal irgendein Starwars-Spiel gab, was so aufgebaut war...
Dennoch frohen ersten Advent
Cord
Die neueren Brillen (momentan Kabel1 glaub' ich...) funktionieren anders. Die Farben bei der Brille sind ja nicht so "extrem". Hier ist es so, dass eine Farbe im Gehirn langsamer verarbeitet wird, als die der anderen Seite. Man hat also auch zwei unterschiedliche Seheindrücke, welche das Gehirn zu einem dreidimensionalen Bild vereint. (Funktioniert daher nur, wenn im Bild Bewegung herrscht. Rechts --> Links und umgekehrt...)
Für den Computer wäre es ideal, eine LCD-Shutter-Brille zu haben. Abwechselnd wird immer eine Seite abgeblendet. Gleichzeitig wird am Computer ein Wechsel von leicht räumlich versetzten Bildern gezeigt. Ist aber recht teuer und unhandlich. Kopfschmerzen sind auch keine Seltenheit...
Am einfachsten scheint es zu sein, mit der Rot-Grün-Brille zu arbeiten. Da wäre Vektorgrafik wie bei Elite aufm C64 (keine ausgefüllten Flächen) am tauglichsten. (Schwarzer Hintergrund und räumlich versetzte rote und grüne Grafiken.) Ich meine, dass es mal irgendein Starwars-Spiel gab, was so aufgebaut war...
Dennoch frohen ersten Advent
Cord
ich habe da nochmal eine frage:
Sprite3DBlendingMode(Ausgangsmodus, Zielmodus)
was macht das? also inner hilfe steht das hat was mit blending zu tun...
da stehen dann 13 werte allerdings nicht was diese 13 werte machen
ist vll einer der werte dafür verantwortlich, das man 2 bilder ineinander schreibt? und der nur die höchsten werte des pixels ausspuckt?
also wenn ich das ganze mit tranzparent mache, dann sind meine farben nicht so hell. und wenn ich jetzt 2 pixel übereinander schreiben möchte dann ist die Farbe so... naja nicht toll
naja wäre cool wenn hier jemand alle 13 werte erklären würde thx!!
frohen ersten Advent!
achja @ cord: ich mach jetzt die einzelnen wände rot oder grün also ohne texturen (das bringt es ja nicht) ^^ hoffe der shooter wird trozdem cool^^
Sprite3DBlendingMode(Ausgangsmodus, Zielmodus)
was macht das? also inner hilfe steht das hat was mit blending zu tun...
da stehen dann 13 werte allerdings nicht was diese 13 werte machen

ist vll einer der werte dafür verantwortlich, das man 2 bilder ineinander schreibt? und der nur die höchsten werte des pixels ausspuckt?
also wenn ich das ganze mit tranzparent mache, dann sind meine farben nicht so hell. und wenn ich jetzt 2 pixel übereinander schreiben möchte dann ist die Farbe so... naja nicht toll

naja wäre cool wenn hier jemand alle 13 werte erklären würde thx!!
frohen ersten Advent!
achja @ cord: ich mach jetzt die einzelnen wände rot oder grün also ohne texturen (das bringt es ja nicht) ^^ hoffe der shooter wird trozdem cool^^
hier kannst du einige mögliche kombinationen sehen:
Sprite3DBlendingMode-TEST
Sprite3DBlendingMode-TEST