Probleme mit 16:9 & Fake Fullscreen
Übersicht

![]() |
IguanBetreff: Probleme mit 16:9 & Fake Fullscreen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Tachwohl
Vielleicht kennt ihr ja eine Lösung zu meinem Problem: Ich möchte ein Spiel mit Ratio 16:9 machen... Mein Laptop: Marke Sony Vaio, hat ein Full HD Display, Blu-Ray brenner, OS Vista 64Bit, also nicht gerade allzu altmodisch. Wenn ich nun eine Auflösung wie: Code: [AUSKLAPPEN] Graphics3D, 1920,1080,0,1 ;16:9 oder Code: [AUSKLAPPEN] Graphics3D 1280,720,0,1 ; 16:9 setzte, kommt die Fehlermeldung: "Unable to set graphicsmode". Wie kann das sein? Meine Grafikkarte sollte das doch können... mein Lappi hat ja ein FULL HD Display.. Im Fenstermodus (Modus 2 + 3 klappt das allerdings ohne probleme...) Könnt ihr vielleicht mir weiterhelfen? ![]() Des weiteren wollte ich wissen, was ihr von folgender Idee haltet: Eine Art "Fake-Fullscreen" zu erstellen. Damit meine ich folgendes: Das Spiel in einer 16:9 Ratio Auflösung im Modus 3 erstellen. (Beispiel: Graphics3D 1280,720,0,3). Dann beim Spielstart ein WinAPI skript (programmiert z.B mit Autohotkey) starten, welches das Fenster in den Vordergrund rückt (AlwaysOnTop) und der Bildschirmauflösung ensprechend skaliert und verschiebt. Das skalieren und verschieben müsste dann so geschehen, dass das Fenster grösser als die Auflösung des Bildschirmes ist, damit die Titelleiste und der Fensterrahmen ausserhalb des Bildschirmes und somit nicht sichtbar sind. Damit könnten theoretisch alle Monitore von der Auflösung her abgedeckt werden. (Klar sieht es in gewissen Fällen nicht mehr so gut aus, z.B wenn der Bildschirm ein Ratio von 4:3 hat, aber das Spiel möchte ich halt für 16:9 Bildschirme machen.) Was haltet ihr davon? Müsste doch gehen, oder? |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
CountGfxModes![]() ![]() |
||
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 |
![]() |
FireballFlameBetreff: Re: Probleme mit 16:9 & Fake Fullscreen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Iguan hat Folgendes geschrieben: Klar sieht es in gewissen Fällen nicht mehr so gut aus, z.B wenn der Bildschirm ein Ratio von 4:3 hat, aber das Spiel möchte ich halt für 16:9 Bildschirme machen.
Damit machst du dich bei Spielern wie mir unbeliebt. Es sei denn, das ganze ist nur für dich privat gedacht, versteht sich. |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
![]() |
Iguan |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe mich mal an den vorhin beschriebenen Fake-Fullscreen gemacht und bin auf ein Problem gestossen...
Könnt ihr bitte mal ausprobieren, ob ihr das Fenster (von nachfolgendem Code) mit der Maus beinahe zum Fullscreen skalieren könnt. Das bedeutet, die Titelleiste soweit es geht aus dem oberen Bildschirmrand schieben und die Ränder auch so weit es geht links, rechts und unten aus dem Bildbereich ziehen... (Taskleiste am besten ausblenden) Code: [AUSKLAPPEN] Graphics3D 1280,720,0,3 AppTitle "WindowTitle" Line 0,0,100,0 Line 0,0,0,100 Line 0,0,1279,720 Line 1279,719,1180,719 Line 1279,719,1279,620 ;ExecFile "e:\ScaleWindow_and_Set_OnTop.ahk" WaitKey End Nachfolgendes Autohotkey-Skript (WinAPI) sollte dies eigentlich automatisch machen... Autohotkey Code: Code: [AUSKLAPPEN] WinMove, WindowTitle, , -5, -30 , A_ScreenWidth + 10, A_ScreenHeight+35 WinSet, AlwaysOnTop, On , WindowTitle ... allerdings kann ich bei mir das Fenster nicht ganz zum unteren Bildschirmrand vergrössern, da fehlen immer etwa 25 Pixel... ich kann zwar mit der Maus ziehen, das Fenster will aber nicht grösser werden. Ist das bei euch auch so? An was könnte das liegen? |
||
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Woran es exakt liegt dass du dein Fenster nicht so groß kriegst weiß ich nicht.
Was ich dir allerdings empfehlen würde ist, da du ja eh schon in der WinAPI bist, einfach den Style deines Fensters zu ändern und den Rahmen komplett abzuschalten. Code: [AUSKLAPPEN] SetWindowLong(hwnd, -16, $10000000)
Das ist auch keine allzu neue Idee muss ich dich eventuel enttäuschen. Einige Spiele(zum Beispiel alle die die neuste Version der Source Engine benutzten, oder auch alle meine neueren Programme) unterstützen rahmenlosen Fenstermodus. Das hat vor allem den Vorteil, gerade in Spielen, dass man zum einen den gesammten Bildschirm für sien Programm zur Verfügung hat(wer will schon ein athmosphärisches Rollenspiel im Fenster spielen), aber dass man auch einfach zu anderen Programmen wechseln kann. Viele Vollbild-Spiele kommen damit zwar auch relativ gut klar, aber oft dauert es mindestens ein Paar Sekunden bis der Grafiktreiber(oder wer auch immer hier zuständig ist) umgeschaltet hat, oder, in seltenen Fällen stürzt das Spiel auch einfach ab. Diese Probleme gibt es im Fenstermodus nicht, und mir wären auch sonst keine großartigen Nachteile bekannt. Man hat zwar als Programierer ein bisschen weniger Kontrolle im Fenstermodus, und es wird sicherlich auch minimal mehr Leistung brauchen, aber im Endeffekt sind die Vorteile deutlich überwiegend finde ich. |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
![]() |
Iguan |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ aMul: Danke, und ich dachte ich könnte mit dieser Idee die Welt verändern... *scherz* ![]() ...konntest du es bis zu Fullscreen skalieren oder geht das bei dir auch nicht? |
||
![]() |
Jamagin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und wieso passt du das Fenster nicht einfach der Desktopgröße an?
Code: [AUSKLAPPEN] ScreenBreite = apiGetSystemMetrics(0) ScreenHoehe = apiGetSystemMetrics(1) - 60 TempFaktor1# = 1024.0 / 708.0 TempFaktor2 = ScreenHoehe * TempFaktor1# Graphics3D TempFaktor2, ScreenHoehe, 0, 2 Graphics3D 1024, 708, 0, 3 Du mußt aber noch eine user32.decls dazu machen und in den ordner userlibs im Blitz3D Ordner reinspeichern! Code: [AUSKLAPPEN] .lib "user32.dll" apiGetSystemMetrics%(nIndex) : "GetSystemMetrics" lg. Jamagin |
||
- Zuletzt bearbeitet von Jamagin am Do, Mai 03, 2012 20:54, insgesamt einmal bearbeitet
![]() |
Iguan |
![]() Antworten mit Zitat ![]() |
---|---|---|
zitat:
... allerdings kann ich bei mir das Fenster nicht ganz zum unteren Bildschirmrand vergrössern, da fehlen immer etwa 25 Pixel... ich kann zwar mit der Maus ziehen, das Fenster will aber nicht grösser werden... |
||
![]() |
Jamagin |
![]() Antworten mit Zitat ![]() |
---|---|---|
... wegen der Taskleiste!
lg. Jamagin |
||
Bevor du etwas neues beginnst, erledige das alte |
![]() |
Addi |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Jamagin
Ich glaube es geht noch viel leichter BlitzBasic: [AUSKLAPPEN]
Bin gerade nich am Pc und kann es nicht testen, aber es sollte so gehen ![]() |
||
BP/B3D/BMax : Lerne Java : Früher mal Lite-C : Gewinner BCC 62 |
![]() |
Iguan |
![]() Antworten mit Zitat ![]() |
---|---|---|
ok, danke für die Antworten! Ich hab ein Autohotkey skript im i-net gefunden, mit dem es funktioniert... das mit der userlib werde ich auch noch probieren...
Hier das Script falls Interesse vorhanden: Code: [AUSKLAPPEN] ; Fake-Fullscreen (Win+F) #f:: WinGet, WindowID, ID, A ; oder WinGet, WindowID, ID, Name_Des_BlitzbasicFensters_Im_Fenstermodus3 WinGet, Style, Style, ahk_id %WindowID% ; If true, blow up the window, otherwise restore it. If (Style & 0xC40000) { ; Get the window geometry and save it with the window ID for later. WinGetPos, PosX_%WindowID%, PosY_%WindowID%, W_%WindowID%, H_%WindowID%, ahk_id %WindowID% ; Figure out the center. xc := PosX_%WindowID% + W_%WindowID%/2 yc := PosY_%WindowID% + H_%WindowID%/2 ; Now get the monitor the window center is on. MID := FindMonitor(xc, yc) SysGet, mn, Monitor, %MID% ; Calculate monitor size. mnWidth := mnRight - mnLeft mnHeight := mnBottom - mnTop ; Now, remove the window caption and border, and move the window to fill ; the whole monitor. WinSet, Style, -0xC40000, ahk_id %WindowID% WinMove, ahk_id %WindowID%, , %mnLeft%, %mnTop%, %mnWidth%, %mnHeight% } Else { ; First, get back the caption and border. WinSet, Style, +0xC40000, ahk_id %WindowID% ; Now, if we have variables for the window, restore its position, otherwise ; fall back to moving it to a visible spot. This should never happen though. If (H_%WindowID% <> 0) { WinMove, ahk_id %WindowID%, , PosX_%WindowID%, PosY_%WindowID%, W_%WindowID%, H_%WindowID% } Else { WinMove, ahk_id %WindowID%, , 50, 50, 500, 500 } } return ; Helper Functions FindMonitor(xc, yc) { SysGet, mc, MonitorCount Loop, %mc% { SysGet, moni, Monitor, %A_Index% if (xc >= moniLeft and xc <= moniRight and yc >= moniTop and yc <= moniBottom) { return %A_Index% return %A_Index% } } return 0 } |
||
- Zuletzt bearbeitet von Iguan am Fr, Mai 04, 2012 11:49, insgesamt 2-mal bearbeitet
![]() |
Jamagin |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Addi,
das geht schon mal gar nicht! Fehlermeldung: Unable to set graphic mode lg. Jamagin |
||
Bevor du etwas neues beginnst, erledige das alte |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was gab dir denn countgraphicmodes aus? wird Full HD denn unterstützt? | ||
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 |
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Iguan:
Ja, mit meiner Methode kann man das Fenster über den kompletten Bildschirm ziehen. Da es mir scheint, dass man meinen Vorschlag allerdings komplett ignoriert hat, hier noch mal ein ausführlicher und lauffähiger Code: BlitzBasic: [AUSKLAPPEN] ; get window handle Mit der entsprechenden *.decls: Code: [AUSKLAPPEN] .lib "user32.dll"
SetWindowLong% (hwnd%, nIndex%, dwNewLong%) : "SetWindowLongA" MoveWindow% (hwnd%, x%, y%, nWidth%, nHeight%, bRepaint%) : "MoveWindow" Dieser Code erstellt bei mir ein Fenster welches den ganzen Bildschirm bedeckt(inclusive Taskleiste) und keinen Rahmen hat. Vorsicht: Das gilt natürlich nur für FullHD 1080p Auflösung, andererseits müssen die Parameter im Code angepasst werden! Wenn das so nicht klappt verweise ich in letzter Instanz auf Bladerunner, welcher ja bisher auch fleißig ignoriert wurde. |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
![]() |
Addi |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Jamagin
Ok tut mir leid. ![]() Ich hatte nur irg. wo mal gelesen das das auch einfach so über Graphics geht. |
||
BP/B3D/BMax : Lerne Java : Früher mal Lite-C : Gewinner BCC 62 |
BIG BUG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das mit dem Graphics-Befehl funktioniert schon, Du hast nur einen Parameter falsch belegt.
So sollte es klappen: Code: [AUSKLAPPEN] Graphics3D 0,0, 32, 1
Ich meine dann müsste der die Desktop-Auflösung im Fullscreen nehmen... |
||
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group