Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Einige Fragen zur Grafik in FreeBasic.
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 08.04.2006, 21:01    Titel: Einige Fragen zur Grafik in FreeBasic. Antworten mit Zitat

Hallo,
ich muss mal wieder was nachfragen durchgeknallt

1. Ist ein schneller ANTIALIAS-Effekt mit FB-Boardmitteln möglich? Mein Ziel wäre konkret ein AA, das den kompletten 640x480x16 bildschirm antialiast, das auch unter 1000 Mhz schnell läuft.

Wenn nicht, wie geht's am einfachsten (Lib?)

2. Gibt es einen einfachen weg, ein eigenes Alpha-Blending zu machen? Da meine ich jetzt, dass man die grundfarbe, z.B. blau, hat und dann eine 2 farbe drüberlegt (bsp: weiß) und dann ein hellblau rauskommt?

-jojo
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Devilkevin
aka Kerstin


Anmeldungsdatum: 11.11.2004
Beiträge: 2532
Wohnort: nähe Mannheim

BeitragVerfasst am: 08.04.2006, 21:22    Titel: Re: Einige Fragen zur Grafik in FreeBasic. Antworten mit Zitat

Jojo hat Folgendes geschrieben:

2. Gibt es einen einfachen weg, ein eigenes Alpha-Blending zu machen? Da meine ich jetzt, dass man die grundfarbe, z.B. blau, hat und dann eine 2 farbe drüberlegt (bsp: weiß) und dann ein hellblau rauskommt?


Wie meinst du das jetzt? Mit Krams wie Line, Circle usw. - oder mit Grafikdateien. Mit Grafiken hab ichs schonmal versucht da kommt ein seltsames Gemischt raus - ist aber kein Alpha-Blending!
_________________
www.piratenpartei.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 08.04.2006, 21:25    Titel: Antworten mit Zitat

naja, ich wollts wahrscheinlich mit Pset bzw. Pixelpufferung machen... also ohne grafikdatei.

in einem Modus, der Palette get unterstützt, wäre das leicht machbar, aber ich weiß nicht, wie ich die farbwerte in 16 /32 bit zerlegen muss....
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 08.04.2006, 22:45    Titel: Antworten mit Zitat

ähm viel spaß durchgeknallt
http://de.wikipedia.org/wiki/Antialiasing ist wohl ein ganz guter ausgangspunkt, in welchem maße du die Farbwerte mischen musst hängt davon ab, wie viel der pixel eben von welcher farbe bedeckt wird. wenns praktisch diagonal drüber geht 1:1 mischen, wenns aber nur grad noch so den pixel streift vielleicht 1:4, kommt immer drauf an.. Möglich ists also sicher nur die frage is ob du mit der performance dann noch arbeiten kannst weil das frisst ganzschön..
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 08.04.2006, 22:56    Titel: Antworten mit Zitat

vieleicht sollt ichs besser so ausdrücken: ich möchte eigetnlich für dungeon 2 fb, dass das bild sehr unscharf wirkt (also komplett verschwimmt)....
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 08.04.2006, 23:08    Titel: Antworten mit Zitat

ach du willst nur verschommenes bild? dann mach einfach n array, speicher den ganzen bildschirm drin oder auch nur den teil den du grad bearbeitest und misch immer irgendwie so die eigene pixelfarbe zu 60% und die umliegenden farben zu jeweils 10% ein oder sowas, probier da einfach bisschen rum, je nach dem wie viel du die nachbarfarben mit einfließen lässt oder vielleicht auch noch weiter entfernte farben um so unschärfer wirds.. Das is aber nich AntiAliasing, das ist Kantenglättung dass man die einzelnen pixel nicht mehr als ecken erkennt sondern alles rund wirkt.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mecki
Igel


Anmeldungsdatum: 10.09.2004
Beiträge: 985
Wohnort: Niederbayern

BeitragVerfasst am: 09.04.2006, 02:20    Titel: Antworten mit Zitat

Wenn du im 32-Bit Modus arbeitest, gibts für PUT auch den optionalen ALPHA-Parameter.
_________________
» Yodl.de: So sucht man gestern. verwundert
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 09.04.2006, 02:54    Titel: Antworten mit Zitat

mit dem wird aber nix verschwommen oO
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mecki
Igel


Anmeldungsdatum: 10.09.2004
Beiträge: 985
Wohnort: Niederbayern

BeitragVerfasst am: 09.04.2006, 03:25    Titel: Antworten mit Zitat

Bezog sich auch auf Frage 2. Da wäre vielleicht eine Kombi aus ImageCreate und Put nicht schlecht, weiß ja nicht das du genau machen möchtest, Jojo
_________________
» Yodl.de: So sucht man gestern. verwundert
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 09.04.2006, 09:02    Titel: Antworten mit Zitat

Mit einer GET PUT Aktion liesse sich doch einfach eine Unschärfe erzeugen?
Code:
dim scharf as any ptr
dim unscharf as any ptr

screen 18,32
scharf=IMAGECREATE(640,480)

unscharf=IMAGECREATE(660,500)

for i=0 to 255
    circle(300,50+i),i, RGB(i*10 mod 255,i mod 255,0)
next i

sleep 100

get (0,0)-(639,479),scharf

cls
put (0,0),scharf,PSET

line unscharf,(0,0)-(640,480),0,BF

for i=1 to 20
    put unscharf,(i,i),scharf,ALPHA, 250/i
    put (0,0),unscharf,PSET

    sleep 20
next i

put (0,0),unscharf,PSET

sleep
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 09.04.2006, 21:50    Titel: Antworten mit Zitat

aslo, fullscreen-put mit alpha is leider seeehr langsam hab cih festgestellt.. deinen code werd ich in jedem fall mal ausprobieren zwinkern so vom ansehen her scheint er aber auch langsam zu sein mit dem Kopf durch die Mauer wollen
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 10.04.2006, 07:24    Titel: Antworten mit Zitat

Das stimmt leider, mein Programm arbeitet auch mit Fullscreen GET/PUT mit Alpha.

Vielleicht könnte man ja die Spielgrafiken selbst Unscharf rechnen?
Also die GET/PUT Alpha Aktion auf die Sprites anwenden wenn das Programm oder das Level startet.
Dann wäre diese Aufwendige Aktion einmal pro Programm start, damit könnte man sicher Leben.
Braucht auch das zulange könnte man zur Not Unscharfe Grafiken verwenden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 10.04.2006, 21:25    Titel: Antworten mit Zitat

also, das "verschwimmen" war eigentlich so für dungeon 2 gedacht:
einmal kommt man ins gefängis, und da is man ganz benommen und da soll alles ganz unscharf werden... naja, ich werds dann wohl ieber in SNES-manier machebn und alles ganz pixelig werden lassen grinsengrinsen

und dein code ist durchaus für den übergang weltkarte->Kampf gebrauchbar, danke!
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 12.04.2006, 22:59    Titel: Antworten mit Zitat

Hi,
die Sub Fader_MMX kann das Bild "verschwimmen" lassen (3-7 mal aufrufen) oder sanft ausblenden (80 - 120 mal aufrufen).
2 Einschränkungen:
1. ab Grafikmode 14, in 32 bpp (Bit per Pixel)
2. MMX fähige CPU (CPU jünger als 6 Jahre)
Code:
Option Explicit

Declare Sub fader_MMX (ByVal ScrPtr As Byte Ptr)
Screen 18 , 32,,1 '640 x 480, 32bpp

Dim i As Integer
For i = 0 To &hffffff Step &he2af
  Color i : Print "  Volta ";
Next
Sleep 2000
For i= 1 To 110
  ScreenLock
  fader_MMX(ScreenPtr)
  ScreenUnlock
  If i < 6 Then Sleep 1000
  Sleep 4
Next
Print "verdisch..."
Sleep
End
'---------------------

Sub fader_MMX (ByVal ScrPtr As Byte Ptr)
'12.04.2006  Fader_MMX by Volta
 Dim As Integer i, j, Breite, Hoehe, bpp, byte_zeile
 If (fb_CpuDetect And &h800000) = 0 Then Exit Sub
 ScreenInfo Breite, Hoehe, bpp
 If bpp < 32 Then Exit sub
 byte_zeile = Breite Shl 2
 For i = 1 To Hoehe - 2
   ScrPtr += byte_zeile
   For j = 0 To byte_zeile - 4 Step 4
    asm
     mov eax, [ScrPtr]
     add eax, [j]
     mov ebx, [byte_zeile]
     pxor mm2, mm2
     movd mm0, [eax +ebx]
     punpcklbw mm0, mm2
     movd mm1, [eax]
     punpcklbw mm1, mm2
     paddw mm0, mm1
     movd mm1, [eax -4]
     punpcklbw mm1, mm2
     paddw mm0, mm1
     movd mm1, [eax +4]
     punpcklbw mm1, mm2
     paddw mm0, mm1
     psrlw mm0, 2
     packuswb mm0, mm0
     movd [eax], mm0
    End asm
   Next j
 Next i
 asm emms
End Sub
Gruß
Volta
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 12.04.2006, 23:22    Titel: Antworten mit Zitat

kling gut, wird getestet zwinkern
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 13.04.2006, 09:00    Titel: Antworten mit Zitat

Sieht echt gut aus!
Was ist für einen Konstante/Variabel?
fb_CpuDetect
Sowohl in der Deutschen Dokumentation von freebasic.de also auch in der Dokumentation von freebasic.net finde ich es nicht.
Die Funktion habe ich verstanden, es geht ja darum zu prüfen ob die CPU MMX fähig ist aber wie geht genau?

Ich hab auch im Changelog nachgesehen und finde den Befehl/die Variabel/Funktion nicht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 13.04.2006, 11:36    Titel: Antworten mit Zitat

da werden wohl die CPU-Infos drinstehen und (fb_CpuDetect and &h800000)=0 prüft wohl, ob MMX fehlt..
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 13.04.2006, 11:51    Titel: Antworten mit Zitat

Soweit ist es mir auch klar, aber es sieht aus wie ein Freebasic Befehl und trotzdem finde ich keine Doku dazu.
Auch im Englischen Forum gibt es keine Doku, sondern nur Anwendungen:
http://www.freebasic.net/forum/viewtopic.php?t=3658
Oder eine Fehlermeldung:
http://www.freebasic.net/forum/viewtopic.php?t=1673

Etwas ähnliches wie eine Doku gibt es im Joshy Board, geschrieben von volta aber auch diese ist sehr dünn.

Ich bin erstaunt darüber das es FB Funktionen gibt, die nur einem solch kleinem Kreise bekannt sind.
Selbst in dem Dokument "docs\keywords.txt" steht nichts darüber.

Nun, wenn man es unbedingt wissen will, könnte man den Freebasic Quelcode analysieren, aber das ist mir zuviel aufwand.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 14.04.2006, 11:02    Titel: Antworten mit Zitat

Hallo Michael,
ja, das ist eine von vielen internen FB-Funktionen, die man aus dem Quellcode ersehen kann.
Entspricht dem CPUID-Aufruf der die family - Informationen und einige CPU - Eigenschaften ausgibt.
Dokumentationen zu 'fb_CpuDetect' gibt es nicht (kenn ich jedenfalls nicht).
Gruß
Volta
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 14.04.2006, 11:52    Titel: Antworten mit Zitat

Also in fbc.exe finde ich den Befehl, aber leider nicht im Quellcode von FB.

Aber im Quellcode der GFXLIB:
libfb_gfx_core.c hat Folgendes geschrieben:
....
if (fb_CpuDetect() & 0x800000) {
fb_mode->flags |= HAS_MMX;
fb_hMemCpy = fb_hMemCpyMMX;
fb_hMemSet = fb_hMemSetMMX;
}
....

Die Libary arbeite MMX optimiert geschockt.

Ach hier ist ja der Gesuchte Freund:
rtlib\libfb_cpudetect_x86.s
Naja, ich kann leider nicht so gut Asembler, aber dort kann man nach lesen wie's genau geht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz