Seite 2 von 3
Verfasst: 23.03.2009 19:42
von Kaeru Gaman
"volle FPS" ist auch wieder so'n politischer Ausdruck....
wozu brauchst du bei ner Simulation 240 Bilder pro Sekunde?
20, 25, 30 FPS ist schick genug, sowas geht auch mit Images...
http://www.purebasic.fr/german/viewtopic.php?t=19394
... und falls du wirklich nen zigtausend pixel breiten screen erzeugen willst um den Ausschnitt zu scrollen,
hat Fluid allerdings recht, dass das der falsche Ansatz ist.
Verfasst: 23.03.2009 20:08
von Vermilion
@Stargate: Aber nur weil alle (bzw. die Mehrheit) das so machen, heißt das eben noch lange nicht, dass dies der beste Weg ist. Vielleicht ist es denen bloß technisch auch nicht anders möglich. Aber ein in der Größe veränderbarer Screen ist doch klar ein Vorteil hinsichtlich Benutzerfreundlichkeit (ich stecke es nun mal in diese Schublade, die richtige dürfte, wenn, nicht weit entfernt sein). Das in Kombination mit relativen Größen des angezeigten Inhaltes ist das Optimum an Desktopintegration. Ich finde es ziemlich ätzend, ein Spiel gänzlich neu starten zu müssen (besonders bei Hammern wie Prey und ähnlichen), nur um die Auflösung zu ändern.
Wenn man zum Beispiel OpenGL benutzt, reicht es den ViewPort zu vergrößern bzw. verkleinern, ohne dass irgendetwas anderes groß geändert werden muss (vielleicht liegt es mal wieder (Verweis auf Threads) an DirectX selbst?). Wobei ich mir nicht vorstellen kann, dass es an DirectX liegt, da im DirectX SDK Anwendungen enthalten sind die ein Verändern der Renderfenstergröße erlauben (jedoch wird da nicht die Auflösung des Rendering Outputs angepasst).
Ein Grundsatz: Der Computer (bzw. die Software) soll sich an den Menschen der davor sitzt anpassen, nicht umgekehrt. Das halte ich für wichtig.
Verfasst: 24.03.2009 18:01
von KeyKon
Fluid Byte hat geschrieben:KeyKon hat geschrieben:Bei mir geht es um die Visualisierung einer Simulation bei der der Screen gescrollt werden kann, die sollte schon Pixel zu Pixel sein und auch mit vollen FPS laufen...
Falscher Denkansatz. Du scrollst nicht den Screen sondern den Inhalt. So funktioniert es bei OS-Fenstern ebenfalls. Dies kann ein Bild sein oder eine Datenmatrix wie bspw. bei einem MapEditor.
Mir is die Funktion von Scrollen bewusst, selbstverständlich scrolle ich auch den Inhalt und nicht den Screen, ich wollte damit nur ausdrücken das der Inhalt immer Pixel zu Pixel angezeigt werden kann, es wird lediglich mehr oder weniger angezeigt, der eigentliche Inhalt ist viel größer als der Screen...
Verfasst: 24.03.2009 18:46
von Fluid Byte
Kapier ich nicht ...
Vielleicht mal ein anderes Satzzeichen außer Komma verwenden?
Verfasst: 24.03.2009 23:39
von KeyKon
Ich krieg hier noch die krise, mein Problem hat sich doch schon gelöst -.-
-> Fenster is resizeable und Screen soll mitwandern und nich einfach gezoomt werden sondern Pixel zu Pixel bleiben
-> Da der inhalt eh gescrollt wird ist die Auflösung des Screens egal, es wird lediglich mehr oder weniger angezeigt
PUNKT.
Verfasst: 25.03.2009 00:01
von Fluid Byte
Mehr wollt ich doch gar nicht wissen.

Verfasst: 25.03.2009 00:02
von KeyKon
Gut ^^
Verfasst: 08.05.2009 19:12
von hörmi
rein interessehalber
wie hast du es gelöst?
Verfasst: 08.05.2009 23:48
von KeyKon
So in der Art:
Code: Alles auswählen
InitSprite()
If Not OpenWindow(0,0,0,800,600,"Windowed Screen",#PB_Window_ScreenCentered|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_SizeGadget|#PB_Window_SystemMenu)
End
EndIf
If Not OpenWindowedScreen(WindowID(0),0,0,GetSystemMetrics_(#SM_CXSCREEN),GetSystemMetrics_(#SM_CYSCREEN),0,0,0)
End
EndIf
Global XScreen = 800
Global YScreen = 600
Repeat
event = WindowEvent()
Select event
Case #PB_Event_CloseWindow
End
Case #PB_Event_SizeWindow, #PB_Event_MoveWindow
XScreen = WindowWidth(0)
YScreen = WindowHeight(0)
EndSelect
ClearScreen(0)
StartDrawing(ScreenOutput())
FrontColor(#White)
BackColor(#Black)
LineXY(0,0,XScreen,YScreen)
LineXY(XScreen,0,0,YScreen)
DrawText(XScreen-100,YScreen/2-10,"Width: "+Str(XScreen))
DrawText(XScreen-100,YScreen/2+10,"Height: "+Str(YScreen))
StopDrawing()
FlipBuffers(#PB_Screen_WaitSynchronization)
ForEver
Verfasst: 09.05.2009 00:17
von Kaeru Gaman
statt GetSystemMetrix könntest du auch ExamineDesktops anwenden...
die Lösung mit
Code: Alles auswählen
Case #PB_Event_SizeWindow
XScreen = WindowWidth(0)
YScreen = WindowHeight(0)
sieht gut aus.
btw:
http://www.purebasic.fr/german/viewtopi ... 999#243999
... also vielleicht
verwenden, zur vollen Sicherheit.