DISPLAY: Difference between revisions

From QB64 Phoenix Edition Wiki
Jump to navigation Jump to search
m (Removed protection from "DISPLAY")
No edit summary
Line 18: Line 18:
{{PageExamples}}
{{PageExamples}}
''Example 1:'' Displaying a circle bouncing around the screen.
''Example 1:'' Displaying a circle bouncing around the screen.
{{CodeStart}} '' ''
{{CodeStart}}
{{Cl|SCREEN (statement)|SCREEN}} 12
{{Cl|SCREEN (statement)|SCREEN}} 12
x = 21: y =31              'start position
x = 21: y =31              'start position
Line 31: Line 31:
     px = x: py = y        'save older coordinates to erase older circle next loop
     px = x: py = y        'save older coordinates to erase older circle next loop
     {{Cl|_DISPLAY}}                'after new circle is set, show it
     {{Cl|_DISPLAY}}                'after new circle is set, show it
{{Cl|LOOP}} {{Cl|UNTIL}} {{Cl|INKEY$}} = CHR$(27) '' ''
{{Cl|LOOP}} {{Cl|UNTIL}} {{Cl|INKEY$}} = CHR$(27)  
{{CodeEnd}}
{{CodeEnd}}


Line 38: Line 38:


''Example 2:'' [[_DISPLAY]] must be used to render hardware images placed with [[_PUTIMAGE]] ('''version 1.000 and up''').
''Example 2:'' [[_DISPLAY]] must be used to render hardware images placed with [[_PUTIMAGE]] ('''version 1.000 and up''').
{{CodeStart}} '' ''
{{CodeStart}}
{{Cl|CONST}} MenuHeight = 200
{{Cl|CONST}} MenuHeight = 200


Line 67: Line 67:
{{Cl|_PUTIMAGE}} (0, 0)-(640, MenuHeight), MS_HW
{{Cl|_PUTIMAGE}} (0, 0)-(640, MenuHeight), MS_HW
{{Cl|_DISPLAY}}
{{Cl|_DISPLAY}}
{{Cl|END SUB}} '' ''
{{Cl|END SUB}}  
{{CodeEnd}}{{small|Code adapted by Galleon}}
{{CodeEnd}}{{small|Code adapted by Galleon}}
: ''Notes:'' When _DISPLAY is commented out, the hardware Menu Test screen portion will blink and key codes may be seen underneath.
: ''Notes:'' When _DISPLAY is commented out, the hardware Menu Test screen portion will blink and key codes may be seen underneath.
Line 81: Line 81:


{{PageNavigation}}
{{PageNavigation}}
[[Category:Latest]]

Revision as of 22:30, 22 June 2022

The _DISPLAY statement turns off the automatic display while only displaying the screen changes when called.


Syntax

_DISPLAY


Description

  • _DISPLAY turns off the auto refresh screen default _AUTODISPLAY behavior. Prevents screen flickering.
  • Call _DISPLAY each time the screen graphics are to be displayed. Place call after the image has been changed.
  • Re-enable automatic display refreshing by calling _AUTODISPLAY. If it isn't re-enabled, things may not be displayed later.
  • _DISPLAY tells QB64 to render all of the hardware _PUTIMAGE commands loaded into the buffer previously.
  • The _AUTODISPLAY (function) can be used to detect the current display behavior.
  • QB64 can set the graphic rendering order of _SOFTWARE, _HARDWARE, and _GLRENDER with _DISPLAYORDER.


Examples

Example 1: Displaying a circle bouncing around the screen.

SCREEN 12
x = 21: y =31              'start position
dx = 3: dy = 3             'number of pixel moves per loop       
DO
    _LIMIT 100       ' set to 100 frames per second
    x = x + dx: y = y + dy
    IF x < 0 OR x > 640 THEN dx = -dx 'limit columns and reverse column direction each side
    IF y < 0 OR y > 480 THEN dy = -dy 'limit rows and reverse row direction top or bottom
    IF px <> x OR py <> y THEN FOR d = 1 to 20: CIRCLE (px, py), d, 0: NEXT 'erase
    FOR c = 1 TO 20: CIRCLE (x, y), c, 6: NEXT  'draw new circle at new position
    px = x: py = y        'save older coordinates to erase older circle next loop
    _DISPLAY                'after new circle is set, show it
LOOP UNTIL INKEY$ = CHR$(27) 
Explanation: The loop is set with _LIMIT to 100 frames per second to limit CPU usage and the speed of the ball. Each loop a circle is drawn while the previous one is erased when the coordinates change. _DISPLAY only shows the new circle position once each loop. The _DISPLAY routine eliminates the need for setting SCREEN swap pages, CLS and PCOPY. _DISPLAY keeps the image off of the screen until the changes have all completed. Drawing 40 circles every loop helps slow down the ball.


Example 2: _DISPLAY must be used to render hardware images placed with _PUTIMAGE (version 1.000 and up).

CONST MenuHeight = 200


SCREEN _NEWIMAGE(640, 480, 32)
'SLEEP 1
LOCATE 20
DO
    _LIMIT 30
    DisplayMenu
    k = _KEYHIT
    IF k <> 0 THEN PRINT k,
LOOP UNTIL k = 32 OR k = 27


SUB DisplayMenu
STATIC init, MS_HW AS LONG
IF NOT init THEN
    init = -1
    MS = _NEWIMAGE(640, MenuHeight, 32) 'MenuScreen image
    D = _DEST: _DEST MS
    CLS , &HFFAAAAAA 'background color gray
    _PRINTSTRING (20, 2), "Menu Test" 'image text
    MS_HW = _COPYIMAGE(MS, 33) 'create the MenuScreen_HardWare image
    _FREEIMAGE MS
    _DEST D
END IF
_PUTIMAGE (0, 0)-(640, MenuHeight), MS_HW
_DISPLAY
END SUB 
Code adapted by Galleon
Notes: When _DISPLAY is commented out, the hardware Menu Test screen portion will blink and key codes may be seen underneath.


See also



Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage