Transparenzproblem Blitz2D
Übersicht

funkmaster5000Betreff: Transparenzproblem Blitz2D |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
funkmaster5000 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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? | ||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
![]() |
Propellator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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? |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group