Monitor Aspect Ratio Korrektur

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

chi

Betreff: Monitor Aspect Ratio Korrektur

BeitragFr, Aug 14, 2009 14:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Passt die Kamera so an, daß, egal bei welcher Auflösung, keine Verzerrung der Objekte entsteht...

Code: [AUSKLAPPEN]

; Correct monitor aspect ratio on all resolutions
; by chi

Const monratio#   = 16/10.      ; Enter your monitors aspect ratio [ (4/3.), (16/10.), (16/9.), ...]
;Global monratio#  = api_GetSystemMetrics(0) / Float(api_GetSystemMetrics(1))   ; Desktopwidth / Desktopheight

Const w_width   = 800
Const w_height   = 600
Const w_mode   = 1

Graphics3D w_width, w_height, 0, w_mode : WireFrame 1

cube = CreateCube()

cam = CreateCamera()
multiX# = 1.
multiY# = 1.
If w_mode=1
   multiX# = monratio# / (4/3.)
   multiY# = (Float(w_width)/Float(w_height)) / (4/3.)
EndIf
ScaleEntity cam,multiX,multiY,multiX
PositionEntity cam, 0, 0, -5


While Not KeyHit(1)
   mxs# = MouseXSpeed()
    mys# = MouseYSpeed()
   If MouseDown(1)
      RotateEntity cam, EntityPitch(cam) + (mys#/5), EntityYaw(cam) - (mxs#/5), 0
      MoveMouse GraphicsWidth() / 2,GraphicsHeight() / 2
   EndIf
   If KeyDown(200) Then MoveEntity cam, 0, 0, 0.1
    If KeyDown(208) Then MoveEntity cam, 0, 0, -0.1
    If KeyDown(205) Then MoveEntity cam, 0.1, 0, 0
    If KeyDown(203) Then MoveEntity cam, -0.1, 0, 0
   UpdateWorld
   RenderWorld
   Text 10,10,"no stretching on Text(x,y,txt$) anymore ;)"
   Flip
   Delay 1
Wend
End

  • Zuletzt bearbeitet von chi am So, Aug 16, 2009 0:11, insgesamt 4-mal bearbeitet

DAK

BeitragFr, Aug 14, 2009 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
und? was mach ich jetz damit?..

wär nett, wenn du da n paar wörter drüber verlieren würdest...

(wenn ich mcih recht entsinne (bin zu faul zum nachschauen) stehts sogar in den regeln vom codearchiv, dass ma was dazu sagen soll, was ma hier reinstellt (und wenn nciht, dann gehörts rein))
Gewinner der 6. und der 68. BlitzCodeCompo
 

chi

BeitragFr, Aug 14, 2009 14:42
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm, ok! Dachte es wäre selbsterklärend Embarassed

Passt die Kamera so an, daß, egal bei welcher Auflösung, keine Verzerrung der Objekte entsteht...

Wenn du auf einem 16/10 Monitor eine Auflösung von 1280x720 (16/9) verwendest, wird alles in die Höhe gezogen... Benutzt du meinen Code hingegen, wird nichts mehr verzerrt Wink

Zum überprüfen einfach mal "ScaleEntity cam,multiX,multiY,multiX " löschen...


cheers, chi

TimBo

BeitragFr, Aug 14, 2009 14:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Hört sich praktisch an !!

ich werds mal bei gelegenheit testen, sieht echt nützlich aus.

Vielleicht schreibst du dein Beitrag eben noch als Edit unter deinen Code, damit man ned so scrallen muss,
bis man die beschreibung findet.

Grüße
TimBo

BTW: was is mim Forum los ?
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.
 

Hawkins

BeitragFr, Aug 14, 2009 15:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Ahh ok, gut zu wissen.
naja selbsterklärend... man muss sich den Quelltext dazu ansehen, was man aber ungern macht, wenn man was sucht.
Aber die kurze erklärung ist schon voll ausreichend, danke.

Hmm, ich denke, wenn Du als Titel "monitor aspect ratio Korrektur" nimmst, fällt es auch ganz gezielt ins Auge wenn man sowas sucht.
Grüße

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Aug 14, 2009 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Das monratio# sollte man automatisch aus der Desktopauflösung entnehmen. Dann hätte der Code zumindest auch einen Sinn, denn so wird kaum ein Enduser hardcoded was ändern können.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

chi

BeitragFr, Aug 14, 2009 16:54
Antworten mit Zitat
Benutzer-Profile anzeigen
@hectic: ich persönlich mach´s eh so (bzw. benutze einen launcher wo man alles einstellen kann), wollte aber auf api im code hier verzichten.
habs editiert! kann jetzt jeder selber entscheiden...

cheers, chi

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group