DISPLAY: Difference between revisions
Jump to navigation
Jump to search
Code adapted by Galleon
Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage
Report a broken link
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
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 |
- Notes: When _DISPLAY is commented out, the hardware Menu Test screen portion will blink and key codes may be seen underneath.
See also