diff options
author | David Thompson <dthompson2@worcester.edu> | 2023-12-28 11:23:49 -0500 |
---|---|---|
committer | David Thompson <dthompson2@worcester.edu> | 2023-12-28 11:23:49 -0500 |
commit | 25c5eac5e6ca1035db1eddd7bea9ac78531da57e (patch) | |
tree | 96377006bbfee75bcf0ce208c1ef89cbdfa5b803 /manuals/chickadee/Sprites.html | |
parent | 5b2e467a7e5e2ffbb0cbbf2557283be891d8206b (diff) |
Delete manuals!
Good riddance! These are hosted on files.dthompson.us now!
Diffstat (limited to 'manuals/chickadee/Sprites.html')
-rw-r--r-- | manuals/chickadee/Sprites.html | 233 |
1 files changed, 0 insertions, 233 deletions
diff --git a/manuals/chickadee/Sprites.html b/manuals/chickadee/Sprites.html deleted file mode 100644 index 3d045ba..0000000 --- a/manuals/chickadee/Sprites.html +++ /dev/null @@ -1,233 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -or any later version published by the Free Software Foundation; -with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. -A copy of the license is included in the section entitled "GNU -Free Documentation License". - -A copy of the license is also available from the Free Software -Foundation Web site at http://www.gnu.org/licenses/fdl.html. - - -* Chickadee: (chickadee). Game programming toolkit for Guile. - -The document was typeset with -http://www.texinfo.org/ (GNU Texinfo). - --> -<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<title>Sprites (The Chickadee Game Toolkit)</title> - -<meta name="description" content="Sprites (The Chickadee Game Toolkit)" /> -<meta name="keywords" content="Sprites (The Chickadee Game Toolkit)" /> -<meta name="resource-type" content="document" /> -<meta name="distribution" content="global" /> -<meta name="Generator" content="makeinfo" /> -<link href="index.html" rel="start" title="Top" /> -<link href="Index.html" rel="index" title="Index" /> -<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" /> -<link href="Graphics.html" rel="up" title="Graphics" /> -<link href="Fonts.html" rel="next" title="Fonts" /> -<link href="Textures.html" rel="prev" title="Textures" /> -<style type="text/css"> -<!-- -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} -div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -ul.no-bullet {list-style: none} -@media (min-width: 1140px) { - body { - margin-left: 14rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (min-width: 800px) and (max-width: 1140px) { - body { - margin-left: 6rem; - margin-right: 4rem; - max-width: 52rem; - } -} - -@media (max-width: 800px) { - body { - margin: 1rem; - } -} - ---> -</style> -<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" /> - - -</head> - -<body lang="en"> -<span id="Sprites"></span><div class="header"> -<p> -Next: <a href="Fonts.html" accesskey="n" rel="next">Fonts</a>, Previous: <a href="Textures.html" accesskey="p" rel="prev">Textures</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> -<hr /> -<span id="Sprites-1"></span><h4 class="subsection">5.3.3 Sprites</h4> - -<p>For those who are new to this game, a sprite is a 2D rectangular -bitmap that is rendered to the screen. For 2D games, sprites are the -most essential graphical abstraction. They are used for drawing maps, -players, NPCs, items, particles, text, etc. -</p> -<p>In Chickadee, the <code>(chickadee graphics sprite)</code> module provides the -interface for working with sprites. Bitmaps are stored in textures -(see <a href="Textures.html">Textures</a>) and can be used to draw sprites via the -<code>draw-sprite</code> procedure. -</p> -<dl> -<dt id="index-draw_002dsprite">Procedure: <strong>draw-sprite</strong> <em>texture position [#:blend-mode] [#:origin] [#:rect] [#:rotation] [#:scale] [#:shear] [#:tint white]</em></dt> -<dd> -<p>Draw <var>texture</var> at <var>position</var>. -</p> -<p>Optionally, other transformations may be applied to the sprite. -<var>rotation</var> specifies the angle to rotate the sprite, in radians. -<var>scale</var> specifies the scaling factor as a 2D vector. <var>shear</var> -specifies the shearing factor as a 2D vector. All transformations are -applied relative to <var>origin</var>, a 2D vector, which defaults to the -lower-left corner. -</p> -<p><var>tint</var> specifies the color to multiply against all the sprite’s -pixels. By default white is used, which does no tinting at all. -</p> -<p>Alpha blending is used by default but the blending method can be -changed by specifying <var>blend-mode</var>. -</p> -<p>The area drawn to is as big as the texture, by default. To draw to an -arbitrary section of the screen, specify <var>rect</var>. -</p></dd></dl> - -<span id="Sprite-Batches"></span><h4 class="subsubsection">5.3.3.1 Sprite Batches</h4> - -<p>It’s not uncommon to need to draw hundreds or thousands of sprites -each frame. However, GPUs (graphics processing units) are tricky -beasts that prefer to be sent few, large chunks of data to render -rather than many, small chunks. Using <code>draw-sprite</code> on its own -will involve at least one GPU call <em>per sprite</em>. This is fine -for rendering a few dozen sprites, but will become a serious -bottleneck when rendering hundreds or thousands of sprites. To deal -with this, a technique known as “sprite batching” is used. Instead -of drawing each sprite immediately, the sprite batch will build up a -large buffer of sprites to draw and send them to the GPU all at once. -There is one caveat, however. Batching only works if the sprites -being drawn share a common texture. A good strategy for reducing the -number of different textures is to stuff many bitmaps into a single -image file and create a “texture atlas” (see <a href="Textures.html">Textures</a>) to access -the sub-images within. -</p> -<dl> -<dt id="index-make_002dsprite_002dbatch">Procedure: <strong>make-sprite-batch</strong> <em>texture [#:capacity 256]</em></dt> -<dd><p>Create a new sprite batch for <var>texture</var> with initial space for -<var>capacity</var> sprites. Sprite batches automatically resize when they -are full to accomodate as many sprites as necessary. -</p></dd></dl> - -<dl> -<dt id="index-sprite_002dbatch_003f">Procedure: <strong>sprite-batch?</strong> <em>obj</em></dt> -<dd><p>Return <code>#t</code> if <var>obj</var> is a sprite batch. -</p></dd></dl> - -<dl> -<dt id="index-sprite_002dbatch_002dtexture">Procedure: <strong>sprite-batch-texture</strong> <em>batch</em></dt> -<dd><p>Return the texture for <var>batch</var>. -</p></dd></dl> - -<dl> -<dt id="index-set_002dsprite_002dbatch_002dtexture_0021">Procedure: <strong>set-sprite-batch-texture!</strong> <em>batch texture</em></dt> -<dd><p>Set texture for <var>batch</var> to <var>texture</var>. -</p></dd></dl> - -<dl> -<dt id="index-sprite_002dbatch_002dadd_0021">Procedure: <strong>sprite-batch-add!</strong> <em>batch position [#:origin] [:rotation] [#:scale] [#:shear] [#:texture-region] [#:tint <code>white</code>]</em></dt> -<dd> -<p>Add sprite located at <var>position</var> to <var>batch</var>. -</p> -<p>To render a subsection of the batch’s texture, a texture object whose -parent is the batch texture may be specified as <var>texture-region</var>. -</p> -<p>See <code>draw-sprite</code> for information about the other arguments. -</p></dd></dl> - -<dl> -<dt id="index-sprite_002dbatch_002dclear_0021">Procedure: <strong>sprite-batch-clear!</strong> <em>batch</em></dt> -<dd><p>Reset size of <var>batch</var> to 0. -</p></dd></dl> - -<dl> -<dt id="index-draw_002dsprite_002dbatch">Procedure: <strong>draw-sprite-batch</strong> <em>batch [#:blend-mode]</em></dt> -<dd><p>Render <var>batch</var> using <var>blend-mode</var>. Alpha blending is used by -default. -</p></dd></dl> - -<span id="g_t9_002dPatches"></span><h4 class="subsubsection">5.3.3.2 9-Patches</h4> - -<p>A 9-patch is a method of rendering a texture so that it can be -stretched to cover an area of any size without becoming distorted. -This is achieved by dividing up the sprite into nine regions: -</p> -<ul> -<li> the center, which can be stretched or tiled horizontally and vertically -</li><li> the four corners, which are never stretched or tiled -</li><li> the left and right sides, which can be stretched or tiled vertically -</li><li> the top and bottom sides, which can be stretched or tiled horizontally -</li></ul> - -<p>The most common application of this technique is for graphical user -interface widgets like buttons and dialog boxes which are often -dynamically resizable. By using a 9-patch, they can be rendered at -any size without scaling artifacts. The <code>(chickadee graphics -9-patch)</code> module provides this functionality. -</p> -<dl> -<dt id="index-draw_002d9_002dpatch">Procedure: <strong>draw-9-patch</strong> <em>texture rect [#:margin 0] [#:top-margin margin] [#:bottom-margin margin] [#:left-margin margin] [#:right-margin margin] [#:mode stretch] [#:origin] [#:scale] [#:rotation] [#:blend-mode] [#:tint white]</em></dt> -<dd> -<p>Draw a 9-patch over the area <var>rect</var> using <var>texture</var> whose -stretchable/tileable patches are defined by the given margin -measurements. The corners are never stretched/tiled, the left and -right edges will be stretched/tiled vertically, the top and bottom -edges may be stretched/tiled horizontally, and the center may be -stretched/tiled in both directions. -</p> -<p><var>mode</var> may be either <code>stretch</code> (the default) or <code>tile</code>. -</p> -<p><var>margin</var> specifies the margin size for all sides of the 9-patch. -To make margins of differing sizes, the <var>top-margin</var>, -<var>bottom-margin</var>, <var>left-margin</var>, and <var>right-margin</var> -arguments may be used. -</p> -<p>Refer to <code>draw-sprite</code> for information about the other arguments -as they are the same. -</p></dd></dl> - -<hr /> -<div class="header"> -<p> -Next: <a href="Fonts.html" accesskey="n" rel="next">Fonts</a>, Previous: <a href="Textures.html" accesskey="p" rel="prev">Textures</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> -</div> - - - -</body> -</html> |