resize windowedscreen ohne AA?
resize windowedscreen ohne AA?
'arbeite zZ noch PB3.94 aber das problem(?) habe ich auch mit der 4.00f - wie läßt sich das filtern eines windowedscreens beim resize verhindern? bei resizeimage() kann man das als parameter angeben aber bei windowdscreen habe ich in keiner der hilfen was gefunden und auch nix in diesem sowie im engl. forum! 
Soweit ich weiß hängt das mit der Einstellung Deiner Grafikkarte ab. Dort kannst Du ja festlegen, ob AA eingeschalten sein soll oder nicht. Daher ist es gut möglich, daß Dein Spiel auf dem einen Rechner mit und auf 'nem anderen ohne AA läuft. Ist zwar schade, aber das kann man wohl so vom Programm aus nicht beeinflussen...

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Hi
@ZeHa
@inti
Es ist leider nicht möglich den Filter zu deaktivieren, die einzige möglichkeit (die mir einfällt) ist die Oberfläche über die CPU zeichnen zu lassen.
Ich hab mal eine Prozedur geschrieben, mit der es möglich ist den BackBuffer zu ersetzten.(durch eine Systemmem Oberfläche)
Gruß
Stefan
@ZeHa
Es handelt sich dabei um einen bilinearen filter, nicht um AA.(Es ist auch nicht möglich den Filter in den Einstellungen der Grafikkarte zu deaktivieren)Dort kannst Du ja festlegen, ob AA eingeschalten sein soll oder nicht.
@inti
Es ist leider nicht möglich den Filter zu deaktivieren, die einzige möglichkeit (die mir einfällt) ist die Oberfläche über die CPU zeichnen zu lassen.
Ich hab mal eine Prozedur geschrieben, mit der es möglich ist den BackBuffer zu ersetzten.(durch eine Systemmem Oberfläche)
Code: Alles auswählen
Procedure _BackBufferPtr()
!extrn _PB_DirectX_BackBuffer
!MOV Eax,_PB_DirectX_BackBuffer
ProcedureReturn
EndProcedure
Procedure _SetScreenWidth(Width)
!extrn _PB_Screen_RealWidth
!MOV Eax,[Esp+4]
!MOV [_PB_Screen_RealWidth],Eax
EndProcedure
Procedure _SetScreenHeight(Height)
!extrn _PB_Screen_RealHeight
!MOV Eax,[Esp+4]
!MOV [_PB_Screen_RealHeight],Eax
EndProcedure
Procedure ResizeWindowedScreen(Width,Height)
BackBuffer=CreateSprite(-1,Width,Height)
If BackBuffer=0:ProcedureReturn 0:EndIf
*BackDDS.IDirectDrawSurface7=SpriteID(BackBuffer)
*BackDDS\AddRef()
FreeSprite(BackBuffer)
*OldBackDDS.IDirectDrawSurface7=PeekL(_BackBufferPtr())
*OldBackDDS\Release()
PokeL(_BackBufferPtr(),*BackDDS)
_SetScreenWidth(Width)
_SetScreenHeight(Height)
UseBuffer(-1)
ProcedureReturn 1
EndProcedure
#PB_Screen_VideoMem=0
#PB_Screen_SystemMem=1
Procedure ResizeWindowedScreenEx(Width,Height,Flags)
BackBuffer=CreateSprite(-1,Width,Height,Flags)
If BackBuffer=0:ProcedureReturn 0:EndIf
*BackDDS.IDirectDrawSurface7=SpriteID(BackBuffer)
*BackDDS\AddRef()
FreeSprite(BackBuffer)
*OldBackDDS.IDirectDrawSurface7=PeekL(_BackBufferPtr())
*OldBackDDS\Release()
PokeL(_BackBufferPtr(),*BackDDS)
_SetScreenWidth(Width)
_SetScreenHeight(Height)
UseBuffer(-1)
ProcedureReturn 1
EndProcedure
InitSprite()
OpenWindow(1,0,0,320,240,"ResizeWindowedScreen()")
OpenWindowedScreen(WindowID(1),0,0,80,60,1,0,0)
ResizeWindowedScreenEx(80,60,#PB_Screen_SystemMem)
Repeat
StartDrawing(ScreenOutput())
Box(0,0,70,60,#Red)
Line(0,0,99,99,#Blue)
StopDrawing()
FlipBuffers()
Until WindowEvent()=#PB_Event_CloseWindow
Stefan
Egal ob das nun AA oder ein bilinearer Filter ist, der Effekt ist grob gesagt der gleiche. Und er ist nicht auf jeder Grafikkarte aktiv, ich hab bspw. Gloomy Nights schon auf Rechnern gespielt, wo kein "Weichzeichnen" (um es mal allgemein zu betiteln) verwendet wurde. Vielleicht ist es nicht einstellbar, aber dann trotzdem zumindest Graka-abhängig.

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
danke, das beispiel hat mir schon weitergeholfen - es geht halt darum einen "ungefilterten" screen zu resizen bzw das zu erzwingen. die beiden großen grafikkarten-hersteller haben diesen modus immer automatsich aktiv und nicht jeder weiss wie man das abschaltet - außerdem liebe ich diesen verpixelten retro-look!
...und wenn ich was weichzeichnen will bzw filtern dass mache ich das lieber selber!
dass das kein AA ist war schon klar aber mit dem begriff bzw der abkürzung weiss wenigsten fast jeder was gemeint ist!
dass das kein AA ist war schon klar aber mit dem begriff bzw der abkürzung weiss wenigsten fast jeder was gemeint ist!
Wow, gleich so viel 
Ein Umweg wäre natürlich, selbst zu resizen, sprich, im Falle daß die Anwendung (Spiel?) in einem Fenster ausgeführt wird, werden einfach alle Sprites doppelt so groß gezeichnet (natürlich nicht on-the-fly sondern schon im Voraus hochrechnen) und alle Koordinaten * 2 gerechnet.
Ist zwar auch nicht soo die perfekte Lösung aber immerhin denkbar.
An was programmierst Du denn grad rum, wenn ich mal fragen darf?
Ein Umweg wäre natürlich, selbst zu resizen, sprich, im Falle daß die Anwendung (Spiel?) in einem Fenster ausgeführt wird, werden einfach alle Sprites doppelt so groß gezeichnet (natürlich nicht on-the-fly sondern schon im Voraus hochrechnen) und alle Koordinaten * 2 gerechnet.
Ist zwar auch nicht soo die perfekte Lösung aber immerhin denkbar.
An was programmierst Du denn grad rum, wenn ich mal fragen darf?

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
nix grossartiges, ich hab' vor 2jahren mit pb v3.irgendwas 'nen kleinen screensaver geschrieben (wirklich nix aufregendes) der auf einem bildschirm 320x240 basiert... 'nen screen damit zu öffnen ist schon problematisch und bei einigen freunden die den begeistert
nutzen stösst der mittlerweile recht unübliche modus 640x480 (das mit dem x2 habe ich schon gemacht) auf wenig verständis. nun habe ich den wieder mal ausgegraben, habe den auf windowedscreen umgeschrieben (wusste ich damals noch nicht) und störe mich ein klein wenig an dem hardware-filter... das sieht so "unretro" aus!
...und ein "aufblasen" der grafik würde mir die größe von 36kb kaputtmachen! 
-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
@KG
da dürften aber einige (ati
) grakas damit probleme haben. für sprite3d sollte man schon grössen im ^2 format verwenden.
@inti
im englischen forum gabs glaub ich mal sowas, ohne die sprite3d befehle. such einfach mal.
c ya,
nco2k
da dürften aber einige (ati
@inti
im englischen forum gabs glaub ich mal sowas, ohne die sprite3d befehle. such einfach mal.
c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.