Transparenzproblem Blitz2D

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

funkmaster5000

Betreff: Transparenzproblem Blitz2D

BeitragDo, Okt 18, 2012 11:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Community!

Ich habe folgendes (aber logisches) Problem mit der Transparenz:

Ich habe ein bildschirmfüllendes Hintergrundbild und möchte darauf, sagen wir, Planeten platzieren. Diese Planeten haben in meinem Bildbearbeitungsprogramm einen Leuchteffekt erhalten. Dieser stellt sich, logischerweise, als Ansammlung von Pixeln dar, die von innen nach außen heller werden, bis sie schließlich in die Hintergrundfarbe übergehen.

Da die Pixel heller werden, entsprechen sie nicht mehr der definierten Transparenzfarbe und werden gezeichnet. Das ist natürlich blöd. Ich habe einen Gasnebel als Hintergrund und darauf zeichnet sich dann die Hintergrundfarbe der Planeten trotz Transparenz ab und gibt unschöne Effekte. Meine Idee war jetzt, mit einem Alpha Channel zu arbeiten, der die Transparenz enthält. Damit kann ich (so zumindest meine Vermutung) meinen Leuchteffekt doch anwenden. Ich habe weiterhin versucht, einfach eine Entität in 3D zu erstellen und dieser dann meine Planetentextur zuzuweisen. Das funktioniert so lange, bis ich meinen bildschirmfüllenden Hintergrund zeichnen will, dieser überschreibt nämlich den Planeten. Ich habe auch zu wenig Erfahrung mit 3D, also würde ich das gerne umgehen.

Nach ein bisschen Recherche im Internet habe ich gesehen, dass nur Blitz3D Alpha unterstützt. Stimmt das so? Ich würde also in den "3D Modus" gehen, um einen Alpha Channel zu nutzen?

Danke im Voraus!

DAK

BeitragDo, Okt 18, 2012 11:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Leider kannst du mit den 2D-Befehlen in Blitz3D keine Alpha-Effekte verwenden. Geht leider einfach nicht. Auch dann nicht, wenn du in den 3D-Modus wechselst.
(Was B3D dann macht, ist, du kannst alle 3D-Objekte mittels RenderImage() zeichnen, und der wird dann als quasi-2D-Bild auf den ganzen Schirm gezeichnet. Wenn du dann 2D-Objekte verwendest, dann werden die entweder dahinter oder davor gezeichnet. Der 3D-Modus beeinflusst also die 2D-Befehle nicht!)

Was geht, ist schau nach Draw3D. Das ist eine Implementation der 2D-Befehle über 3D. Schaut im Endeffekt nicht anders aus als die 2D-gezeichneten Sachen, hat aber den Vorteil, dass du z.B. Alpha und flüssige, Echtzeit-Drehungen kriegst.
Gewinner der 6. und der 68. BlitzCodeCompo
 

funkmaster5000

BeitragDo, Okt 18, 2012 11:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die prompte Antwort.

Also dann versuche ich mal den nächsten Schritt. Mit 3D habe ich allerdings keine Erfahrung...

Ich nehme meinen Gasnebel und zeichne ihn auf den Bildschirm mit DrawImage(). Anschließend erstelle ich einen "Planeten" (Spehre Entity mit Planetentextur) und setze diesen mit RenderImage()? Oder brauche ich dafür Draw3D?

Mein Hauptproblem war, dass das 3D Objekt nach dem Setzen des Hintergrunds verschwunden ist. Kann natürlich auch sein, dass ich zu beknackt bin, von wegen Camera oder so.
  • Zuletzt bearbeitet von funkmaster5000 am Do, Okt 18, 2012 12:05, insgesamt einmal bearbeitet

Lobby

BeitragDo, Okt 18, 2012 12:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du den Tipp mit Draw3D überlesen? Mit den 3D-Befehlen lassen sich auch ganz ähnlich wie in 2D Bilder zeichnen, mit dem Unterschied, dass man einige Spielereien wie Alphachannel, Skalierung und Blendeffekte nutzen kann. Wenn du schon 3D verwendest, würde ich dir raten, weitestgehend auf die üblichen 2D-Befehle zu verzichten, schon einfach deswegen, weil 3D und 2D sich nicht so gut vertragen und unter mancher Hardware zu Problemen führen.
Du musst also keine Sphere verwenden, wenn du vorher vorhattest, den Planeten per 2D-Bild darzustellen. Das kannst du weiterhin tun. Sieh dir am besten einmal die Dokumentation von Draw3D an.

Ganz nebenbei, wenn man nicht will, dass RenderWorld() den Backbuffer auch an leeren Stellen überschreibt, kann man das mit CameraClsMode ändern.
 

funkmaster5000

BeitragDo, Okt 18, 2012 12:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, ich habe das schon gesehen.

Unter welchen Vorraussetzungen darf ich Draw3D verwenden (Credits etc.)?
Bin halt leider 3D Neuling und wollte so schnell auch nicht einsteigen. 2D Games sind zum Einstieg denke ich einfach besser geeignet, aber wenn DrawImage3D sich genauso verhält, wie DrawImage, dann dürfte es ja keine Probleme geben.

Triton

BeitragMi, Nov 28, 2012 1:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, ist vermutlich schon erledigt das Thema, aber Transparenz geht auch mit dem ollen B2d.

Es ist zwar recht langsam, aber für kleine Effekte kann mans durchaus gebrauchen. Gibt ja auch noch einige
denkbare möglichkeiten das ganze schneller zu machen.

schau z.B. mal hier: http://www.silizium-net.de/bbcodeb7.htm

Das hiesige Codearchiv hält da garantiert auch noch einiges auf Lager.
Coding: silizium-net.de | Portfolio: Triton.ch.vu
 

funkmaster5000

BeitragDo, Nov 29, 2012 14:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Trotzdem danke für die Antwort. Ich habe mir auch eine Lösung überlegt mit Readpixel, aber es ist einfach zu langsam für Echtzeit-Effekte. Ich frage mich immer, wie man sonst z.B. in 2D-Topdown-Shootern coole Lasereffekte hinbekommt oder sind die auch in 3D, also ein 2D-3D Mix?

BladeRunner

Moderator

BeitragDo, Nov 29, 2012 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Grafikhardware (und auch die Schnittstellen) der 2D-Ära waren speziell auf 2D-Effekte ausgelegt und konnten diese für damalige Verhältnisse auch sehr schnell befeuern. Echte Transparenz gab es damals aber nicht wirklich, einige Rechner brachten Hardwaresprites mit, auch das Overlay von Grafiken mit einem maskierbaren Hintergrund ging recht flott. Echte Alphatransparenz geht erst seit dem Durchdruch der 3D-Hardware und für die musst du eben auch 3D-2-2D-Schnittstellen wie zB Draw3D nutzen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Abrexxes

BeitragSa, Dez 01, 2012 3:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Bleibt anzumerken das aktuelle "Intel GFX" das zum Teil komplett aus blenden.Diese scheis Dinger sind nicht mal in der lage "MASKIMKAGE" korrekt zu behandeln da DX7. D.h. Draw3D ist hier eine gute Alternative. Native 2D Commandos von Bplus oder B3D oder dem SDK sind schlicht und ergreifend zum Tode verurteilt.

Da alle Leute immer biliger wollen ist "INTELGFX" zwar der Fluch der Menschheit, aber immer öffter drin (ALDI/Medion...etc etc)

cu

Ach: und nebenbei: NEIN! Ich bin nicht tot Wink

Propellator

BeitragSo, Dez 02, 2012 14:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Intel GPUs sind wirklich komplette Kacke, werden aber langsam besser. Auch moderne Features werden nicht unterstützt.

Mein Netbook (ASUS eeepc 1005HA seashell, anno 2009) unterstützt OpenGL 1.4 (Aktuell: 4.3), die neusten Intel-Chips (3000HD) unterstützen OpenGL 3.0. (3.2 core wäre mindestens angebracht heutzutage)

Wenn man 2D-Spiele programmieren möchte, fährt man mit BlitzMax potenziell besser.
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis.
 

funkmaster5000

BeitragMo, Dez 03, 2012 14:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Propellator hat Folgendes geschrieben:

Wenn man 2D-Spiele programmieren möchte, fährt man mit BlitzMax potenziell besser.


Das fürchte ich langsam auch. Wie sind denn so die Erfahrungen mit BlitzMax? Ich habe mir ein paar Tutorials angeschaut und habe eigentlich nicht so wirklich Ahnung von OOP, beziehungsweise finde ich das noch recht abstrakt (wobei es ja eigentlich dem Menschen, der in Objekten denkt, entgegenkommen sollte). Unterscheiden sich die Befehle sehr von BlitzBasic oder ist der einzige umfassende, aber grundlegende Unterschied die Möglichkeit der OOP (natürlich abgesehen von Alphachannels und den ganzen sonstigen Spielereien)?

ZEVS

BeitragMo, Dez 03, 2012 16:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Spielereien

Was Spielereien sind, das ist für mich Geschmackssache. Folgende interessante Punkte unterstützt BMax außerdem:
Funktionspointer
OpenGL, neuere DirectX-Schnittstelle
C-Integration (auch Obj-C, C++ und Asm)
modularer Aufbau
dynamische Arrays
eine praktische Modulsammlung (z.B. Listen sind unentbehrlich).
Plattform-Unabhängigkeit
...
Natürlich ist OOP die größte Neuerung, auch wenn man dies als Anfänger weitgehend vermeiden kann. Später findet man dann allerdings heraus, dass dies eine verdammt praktische Sache ist.

ZEVS
 

funkmaster5000

BeitragMo, Dez 03, 2012 16:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Spielereien ist ja nicht unbedingt negativ besetzt. Ich wollte damit eher die Aufmerksamkeit auf die Kernfunktionen lenken.

BlitzMax wird immer interessanter für mich, deswegen fände ich einige Erfahrungen bezüglich Umstieg noch ganz hilfreich. Hat schon jemand diese Erfahrung hinter sich?

Xeres

Moderator

BeitragMo, Dez 03, 2012 18:33
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzMax ist eine komplett andere Programmiersprache.
Manche Befehle heißen ähnlich, aber so ziemlich alles funktioniert unterschiedlich. Sie ist etwas komplizierter als BlitzBasic, aber dafür auch mächtiger. Quellcode muss man komplett neu schreiben - schon allein weil man alles viel hübscher strukturieren kann.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group