diff options
Diffstat (limited to 'manuals/chickadee')
25 files changed, 1008 insertions, 46 deletions
diff --git a/manuals/chickadee/API-Reference.html b/manuals/chickadee/API-Reference.html index bee3d9d..0dcd1de 100644 --- a/manuals/chickadee/API-Reference.html +++ b/manuals/chickadee/API-Reference.html @@ -57,8 +57,31 @@ 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> diff --git a/manuals/chickadee/Audio.html b/manuals/chickadee/Audio.html index 2f20199..755efb9 100644 --- a/manuals/chickadee/Audio.html +++ b/manuals/chickadee/Audio.html @@ -57,8 +57,31 @@ 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> @@ -73,8 +96,80 @@ Previous: <a href="Graphics.html#Graphics" accesskey="p" rel="prev">Graphics</a> <a name="Audio-1"></a> <h3 class="section">2.5 Audio</h3> -<p>There is no audio support yet. Stay tuned! +<p>Chickadee has two data types for audio: samples and music. Samples +are for short sound effects like explosions. Music is for, well, +uh…, music. </p> +<p>Supported file formats include WAV and OGG. +</p> +<dl> +<dt><a name="index-load_002dsample"></a>Scheme Procedure: <strong>load-sample</strong> <em><var>file</var></em></dt> +<dd><p>Load audio sample from <var>file</var>. +</p></dd></dl> + +<dl> +<dt><a name="index-set_002dsample_002dvolume_0021"></a>Scheme Procedure: <strong>set-sample-volume!</strong> <em><var>volume</var></em></dt> +<dd><p>Set the volume that all samples are played at to <var>volume</var>, an +integer value between 0 and 128. +</p></dd></dl> + +<dl> +<dt><a name="index-play_002dsample"></a>Scheme Procedure: <strong>play-sample</strong> <em><var>sample</var></em></dt> +<dd><p>Play <var>sample</var>. Pretty straightforward! +</p></dd></dl> + +<dl> +<dt><a name="index-load_002dmusic"></a>Scheme Procedure: <strong>load-music</strong> <em><var>file</var></em></dt> +<dd><p>Load music from <var>file</var>. +</p></dd></dl> + +<dl> +<dt><a name="index-music_002dvolume"></a>Scheme Procedure: <strong>music-volume</strong></dt> +<dd><p>Return the volume level for music, an integer value between 0 and 128. +</p></dd></dl> + +<dl> +<dt><a name="index-set_002dmusic_002dvolume_0021"></a>Scheme Procedure: <strong>set-music-volume!</strong> <em><var>volume</var></em></dt> +<dd><p>Set the volume that music is played at to <var>volume</var>, an integer +value between 0 and 128. +</p></dd></dl> + +<dl> +<dt><a name="index-play_002dmusic"></a>Scheme Procedure: <strong>play-music</strong> <em><var>music</var> [<var>loop?</var>]</em></dt> +<dd><p>Play <var>music</var>. If <var>loop?</var>, play it over and over and over and +over and… +</p></dd></dl> + +<dl> +<dt><a name="index-pause_002dmusic"></a>Scheme Procedure: <strong>pause-music</strong></dt> +<dd><p>Pause the current music track. +</p></dd></dl> + +<dl> +<dt><a name="index-resume_002dmusic"></a>Scheme Procedure: <strong>resume-music</strong></dt> +<dd><p>Resume the current music track. +</p></dd></dl> + +<dl> +<dt><a name="index-rewind_002dmusic"></a>Scheme Procedure: <strong>rewind-music</strong></dt> +<dd><p>estart the current music track from the beginning. +</p></dd></dl> + +<dl> +<dt><a name="index-stop_002dmusic"></a>Scheme Procedure: <strong>stop-music</strong></dt> +<dd><p>Stop playing the current music track. +</p></dd></dl> + +<dl> +<dt><a name="index-music_002dplaying_003f"></a>Scheme Procedure: <strong>music-playing?</strong></dt> +<dd><p>Return <code>#t</code> if music is currently playing. +</p></dd></dl> + +<dl> +<dt><a name="index-music_002dpaused_003f"></a>Scheme Procedure: <strong>music-paused?</strong></dt> +<dd><p>Return <code>#t</code> if music is currently paused. +</p></dd></dl> + diff --git a/manuals/chickadee/Blending-and-Depth-Testing.html b/manuals/chickadee/Blending-and-Depth-Testing.html index 0c0aaa3..72b6140 100644 --- a/manuals/chickadee/Blending-and-Depth-Testing.html +++ b/manuals/chickadee/Blending-and-Depth-Testing.html @@ -31,7 +31,7 @@ http://www.texinfo.org/ (GNU Texinfo). <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> <link href="Graphics.html#Graphics" rel="up" title="Graphics"> <link href="Vertex-Arrays.html#Vertex-Arrays" rel="next" title="Vertex Arrays"> -<link href="Textures.html#Textures" rel="prev" title="Textures"> +<link href="Fonts.html#Fonts" rel="prev" title="Fonts"> <style type="text/css"> <!-- a.summary-letter {text-decoration: none} @@ -57,8 +57,31 @@ 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> @@ -67,11 +90,11 @@ ul.no-bullet {list-style: none} <a name="Blending-and-Depth-Testing"></a> <div class="header"> <p> -Next: <a href="Vertex-Arrays.html#Vertex-Arrays" accesskey="n" rel="next">Vertex Arrays</a>, Previous: <a href="Textures.html#Textures" accesskey="p" rel="prev">Textures</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p> +Next: <a href="Vertex-Arrays.html#Vertex-Arrays" accesskey="n" rel="next">Vertex Arrays</a>, Previous: <a href="Fonts.html#Fonts" accesskey="p" rel="prev">Fonts</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p> </div> <hr> <a name="Blending-and-Depth-Testing-1"></a> -<h4 class="subsection">2.4.5 Blending and Depth Testing</h4> +<h4 class="subsection">2.4.6 Blending and Depth Testing</h4> diff --git a/manuals/chickadee/Copying-This-Manual.html b/manuals/chickadee/Copying-This-Manual.html index f8bef99..493541d 100644 --- a/manuals/chickadee/Copying-This-Manual.html +++ b/manuals/chickadee/Copying-This-Manual.html @@ -57,8 +57,31 @@ 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> diff --git a/manuals/chickadee/Fonts.html b/manuals/chickadee/Fonts.html new file mode 100644 index 0000000..198bddb --- /dev/null +++ b/manuals/chickadee/Fonts.html @@ -0,0 +1,197 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 2017 David Thompson davet@gnu.org + +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. + + +The document was typeset with +http://www.texinfo.org/ (GNU Texinfo). + --> +<!-- Created by GNU Texinfo 6.3, http://www.gnu.org/software/texinfo/ --> +<head> +<title>The Chickadee Game Toolkit: Fonts</title> + +<meta name="description" content="The Chickadee Game Toolkit: Fonts"> +<meta name="keywords" content="The Chickadee Game Toolkit: Fonts"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Index.html#Index" rel="index" title="Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Graphics.html#Graphics" rel="up" title="Graphics"> +<link href="Blending-and-Depth-Testing.html#Blending-and-Depth-Testing" rel="next" title="Blending and Depth Testing"> +<link href="Lines-and-Shapes.html#Lines-and-Shapes" rel="prev" title="Lines and Shapes"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.indentedblock {margin-right: 0em} +blockquote.smallindentedblock {margin-right: 0em; font-size: smaller} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smalllisp {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} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +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"> +<a name="Fonts"></a> +<div class="header"> +<p> +Next: <a href="Blending-and-Depth-Testing.html#Blending-and-Depth-Testing" accesskey="n" rel="next">Blending and Depth Testing</a>, Previous: <a href="Lines-and-Shapes.html#Lines-and-Shapes" accesskey="p" rel="prev">Lines and Shapes</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Fonts-1"></a> +<h4 class="subsection">2.4.5 Fonts</h4> + +<p>Unlike the traditional TrueType font format that many are accustomed +to, Chickadee loads and renders bitmap fonts in the +<a href="http://www.angelcode.com/products/bmfont/doc/file_format.html">Angel Code format</a>. But why use this seemingly obscure format? It’s +easy to find TTFs but not easy to find FNTs (the canonical file +extension used for Angel Code fonts) and bitmap fonts don’t scale +well. The reason is efficiency. +</p> +<p>If all of the glyphs of a font are pre-rendered and packed into an +image file then it becomes possible to use a texture atlas +(see <a href="Textures.html#Textures">Textures</a>) and a sprite batch (see <a href="Sprites.html#Sprites">Sprites</a>) when +rendering, which is a more efficient way to render fonts than using, +say, <a href="https://www.libsdl.org/projects/SDL_ttf/">SDL_ttf</a> or other +solutions that involve using the FreeType library directly. +</p> +<p>Now what about scaling? In libraries that use TTF fonts, one must +choose the size that the glyphs will be rasterized at up front. To +use <code>n</code> sizes of the same font, one must load <code>n</code> variants +of that font. If the size of the text is dynamic, some kind of +texture scaling algorithm must be used and the text will inevitably +look blurry. At first glance, using bitmap fonts seem to have an even +worse issue. Instead of just loading the same font <code>n</code> times at +different sizes, one would need to generate <code>n</code> image files for +each font size needed. This is where the “signed distance field” +rendering technique comes in. Introduced by +<a href="http://www.valvesoftware.com/.../2007/SIGGRAPH2007_AlphaTestedMagnification.pdf">Valve</a> in 2007, signed distance field fonts can be efficiently stored +in a bitmap and be rendered at arbitrary scale factors with good +results. Chickadee can render both traditional bitmap fonts and +signed distance field fonts. <em>Signed distance field font +rendering is not yet available, so be patient.</em> +</p> +<p>While Chickadee does not yet offer a tool for converting TTF fonts +into FNT fonts, tools such as +<a href="https://github.com/libgdx/libgdx/wiki/Hiero">Hiero</a> may be used +in the meantime. +</p> +<p>The following procedures can be found in the <code>(chickadee render +font)</code> module. +</p> +<dl> +<dt><a name="index-load_002dfont"></a>Scheme Procedure: <strong>load-font</strong> <em><var>file</var></em></dt> +<dd><p>Load the Angel Code formatted XML document in <var>file</var> and return a +new font object. +</p></dd></dl> + +<dl> +<dt><a name="index-font_003f"></a>Scheme Procedure: <strong>font?</strong> <em><var>obj</var></em></dt> +<dd><p>Return <code>#t</code> if <var>obj</var> is a font object. +</p></dd></dl> + +<dl> +<dt><a name="index-font_002dface"></a>Scheme Procedure: <strong>font-face</strong> <em><var>font</var></em></dt> +<dd><p>Return the name of <var>font</var>. +</p></dd></dl> + +<dl> +<dt><a name="index-font_002dline_002dheight"></a>Scheme Procedure: <strong>font-line-height</strong> <em><var>font</var></em></dt> +<dd><p>Return the line height of <var>font</var>. +</p></dd></dl> + +<dl> +<dt><a name="index-font_002dline_002dheight-1"></a>Scheme Procedure: <strong>font-line-height</strong> <em><var>font</var></em></dt> +<dd><p>Return the line height of <var>font</var>. +</p></dd></dl> + +<dl> +<dt><a name="index-font_002dbold_003f"></a>Scheme Procedure: <strong>font-bold?</strong> <em><var>font</var></em></dt> +<dd><p>Return <code>#t</code> if <var>font</var> is a bold font. +</p></dd></dl> + +<dl> +<dt><a name="index-font_002ditalic_003f"></a>Scheme Procedure: <strong>font-italic?</strong> <em><var>font</var></em></dt> +<dd><p>Return <code>#t</code> if <var>font</var> is an italicized font. +</p></dd></dl> + +<dl> +<dt><a name="index-draw_002dtext"></a>Scheme Procedure: <strong>draw-text</strong> <em><var>font</var> <var>text</var> <var>position</var></em></dt> +<dd><p>[#:scale] [#:rotation] [#:blend-mode] +</p> +<p>Draw the string <var>text</var> with the first character starting at +<var>position</var> using <var>font</var>. +</p> +<div class="example"> +<pre class="example">(draw-text font "Hello, world!" (vec2 128.0 128.0)) +</pre></div> + +<p>Refer to <code>draw-sprite</code> (see <a href="Sprites.html#Sprites">Sprites</a>) for information about +the other arguments. +</p></dd></dl> + +<hr> +<div class="header"> +<p> +Next: <a href="Blending-and-Depth-Testing.html#Blending-and-Depth-Testing" accesskey="n" rel="next">Blending and Depth Testing</a>, Previous: <a href="Lines-and-Shapes.html#Lines-and-Shapes" accesskey="p" rel="prev">Lines and Shapes</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> diff --git a/manuals/chickadee/Framebuffers.html b/manuals/chickadee/Framebuffers.html index fd0c64f..c57a82a 100644 --- a/manuals/chickadee/Framebuffers.html +++ b/manuals/chickadee/Framebuffers.html @@ -57,8 +57,31 @@ 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> @@ -71,7 +94,7 @@ Next: <a href="Viewports.html#Viewports" accesskey="n" rel="next">Viewports</a>, </div> <hr> <a name="Framebuffers-1"></a> -<h4 class="subsection">2.4.8 Framebuffers</h4> +<h4 class="subsection">2.4.9 Framebuffers</h4> diff --git a/manuals/chickadee/GNU-Free-Documentation-License.html b/manuals/chickadee/GNU-Free-Documentation-License.html index ea990ae..62ad23f 100644 --- a/manuals/chickadee/GNU-Free-Documentation-License.html +++ b/manuals/chickadee/GNU-Free-Documentation-License.html @@ -57,8 +57,31 @@ 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> diff --git a/manuals/chickadee/Graphics.html b/manuals/chickadee/Graphics.html index efe6df6..0afe5bc 100644 --- a/manuals/chickadee/Graphics.html +++ b/manuals/chickadee/Graphics.html @@ -57,8 +57,31 @@ 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> @@ -85,21 +108,23 @@ blocks to implement additional rendering techniques. <table class="menu" border="0" cellspacing="0"> <tr><td align="left" valign="top">• <a href="Rendering-Engine.html#Rendering-Engine" accesskey="1">Rendering Engine</a>:</td><td> </td><td align="left" valign="top">Rendering state management. </td></tr> -<tr><td align="left" valign="top">• <a href="Sprites.html#Sprites" accesskey="2">Sprites</a>:</td><td> </td><td align="left" valign="top">Draw 2D images. +<tr><td align="left" valign="top">• <a href="Textures.html#Textures" accesskey="2">Textures</a>:</td><td> </td><td align="left" valign="top">2D images. +</td></tr> +<tr><td align="left" valign="top">• <a href="Sprites.html#Sprites" accesskey="3">Sprites</a>:</td><td> </td><td align="left" valign="top">Draw 2D images. </td></tr> -<tr><td align="left" valign="top">• <a href="Lines-and-Shapes.html#Lines-and-Shapes" accesskey="3">Lines and Shapes</a>:</td><td> </td><td align="left" valign="top">Draw line segments and polygons. +<tr><td align="left" valign="top">• <a href="Lines-and-Shapes.html#Lines-and-Shapes" accesskey="4">Lines and Shapes</a>:</td><td> </td><td align="left" valign="top">Draw line segments and polygons. </td></tr> -<tr><td align="left" valign="top">• <a href="Textures.html#Textures" accesskey="4">Textures</a>:</td><td> </td><td align="left" valign="top">2D images. +<tr><td align="left" valign="top">• <a href="Fonts.html#Fonts" accesskey="5">Fonts</a>:</td><td> </td><td align="left" valign="top">Drawing text. </td></tr> -<tr><td align="left" valign="top">• <a href="Blending-and-Depth-Testing.html#Blending-and-Depth-Testing" accesskey="5">Blending and Depth Testing</a>:</td><td> </td><td align="left" valign="top">Control how pixels are combined. +<tr><td align="left" valign="top">• <a href="Blending-and-Depth-Testing.html#Blending-and-Depth-Testing" accesskey="6">Blending and Depth Testing</a>:</td><td> </td><td align="left" valign="top">Control how pixels are combined. </td></tr> -<tr><td align="left" valign="top">• <a href="Vertex-Arrays.html#Vertex-Arrays" accesskey="6">Vertex Arrays</a>:</td><td> </td><td align="left" valign="top">Create 2D/3D models. +<tr><td align="left" valign="top">• <a href="Vertex-Arrays.html#Vertex-Arrays" accesskey="7">Vertex Arrays</a>:</td><td> </td><td align="left" valign="top">Create 2D/3D models. </td></tr> -<tr><td align="left" valign="top">• <a href="Shaders.html#Shaders" accesskey="7">Shaders</a>:</td><td> </td><td align="left" valign="top">Create custom GPU programs. +<tr><td align="left" valign="top">• <a href="Shaders.html#Shaders" accesskey="8">Shaders</a>:</td><td> </td><td align="left" valign="top">Create custom GPU programs. </td></tr> -<tr><td align="left" valign="top">• <a href="Framebuffers.html#Framebuffers" accesskey="8">Framebuffers</a>:</td><td> </td><td align="left" valign="top">Render to texture. +<tr><td align="left" valign="top">• <a href="Framebuffers.html#Framebuffers" accesskey="9">Framebuffers</a>:</td><td> </td><td align="left" valign="top">Render to texture. </td></tr> -<tr><td align="left" valign="top">• <a href="Viewports.html#Viewports" accesskey="9">Viewports</a>:</td><td> </td><td align="left" valign="top">Restrict rendering to +<tr><td align="left" valign="top">• <a href="Viewports.html#Viewports">Viewports</a>:</td><td> </td><td align="left" valign="top">Restrict rendering to </td></tr> </table> diff --git a/manuals/chickadee/Index.html b/manuals/chickadee/Index.html index 3863270..3c1df5e 100644 --- a/manuals/chickadee/Index.html +++ b/manuals/chickadee/Index.html @@ -56,8 +56,31 @@ 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> @@ -80,6 +103,8 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r <a class="summary-letter" href="#Index_fn_letter-D"><b>D</b></a> +<a class="summary-letter" href="#Index_fn_letter-F"><b>F</b></a> + <a class="summary-letter" href="#Index_fn_letter-G"><b>G</b></a> <a class="summary-letter" href="#Index_fn_letter-K"><b>K</b></a> @@ -88,10 +113,14 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r <a class="summary-letter" href="#Index_fn_letter-M"><b>M</b></a> +<a class="summary-letter" href="#Index_fn_letter-P"><b>P</b></a> + <a class="summary-letter" href="#Index_fn_letter-Q"><b>Q</b></a> <a class="summary-letter" href="#Index_fn_letter-R"><b>R</b></a> +<a class="summary-letter" href="#Index_fn_letter-S"><b>S</b></a> + <a class="summary-letter" href="#Index_fn_letter-T"><b>T</b></a> <a class="summary-letter" href="#Index_fn_letter-U"><b>U</b></a> @@ -124,6 +153,18 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r <tr><td colspan="4"> <hr></td></tr> <tr><th><a name="Index_fn_letter-D">D</a></th><td></td><td></td></tr> <tr><td></td><td valign="top"><a href="Kernel.html#index-draw_002dhook"><code>draw-hook</code></a>:</td><td> </td><td valign="top"><a href="Kernel.html#Kernel">Kernel</a></td></tr> +<tr><td></td><td valign="top"><a href="Lines-and-Shapes.html#index-draw_002dline"><code>draw-line</code></a>:</td><td> </td><td valign="top"><a href="Lines-and-Shapes.html#Lines-and-Shapes">Lines and Shapes</a></td></tr> +<tr><td></td><td valign="top"><a href="Sprites.html#index-draw_002dnine_002dpatch"><code>draw-nine-patch</code></a>:</td><td> </td><td valign="top"><a href="Sprites.html#Sprites">Sprites</a></td></tr> +<tr><td></td><td valign="top"><a href="Sprites.html#index-draw_002dsprite"><code>draw-sprite</code></a>:</td><td> </td><td valign="top"><a href="Sprites.html#Sprites">Sprites</a></td></tr> +<tr><td></td><td valign="top"><a href="Fonts.html#index-draw_002dtext"><code>draw-text</code></a>:</td><td> </td><td valign="top"><a href="Fonts.html#Fonts">Fonts</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="Index_fn_letter-F">F</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="Fonts.html#index-font_002dbold_003f"><code>font-bold?</code></a>:</td><td> </td><td valign="top"><a href="Fonts.html#Fonts">Fonts</a></td></tr> +<tr><td></td><td valign="top"><a href="Fonts.html#index-font_002dface"><code>font-face</code></a>:</td><td> </td><td valign="top"><a href="Fonts.html#Fonts">Fonts</a></td></tr> +<tr><td></td><td valign="top"><a href="Fonts.html#index-font_002ditalic_003f"><code>font-italic?</code></a>:</td><td> </td><td valign="top"><a href="Fonts.html#Fonts">Fonts</a></td></tr> +<tr><td></td><td valign="top"><a href="Fonts.html#index-font_002dline_002dheight"><code>font-line-height</code></a>:</td><td> </td><td valign="top"><a href="Fonts.html#Fonts">Fonts</a></td></tr> +<tr><td></td><td valign="top"><a href="Fonts.html#index-font_002dline_002dheight-1"><code>font-line-height</code></a>:</td><td> </td><td valign="top"><a href="Fonts.html#Fonts">Fonts</a></td></tr> +<tr><td></td><td valign="top"><a href="Fonts.html#index-font_003f"><code>font?</code></a>:</td><td> </td><td valign="top"><a href="Fonts.html#Fonts">Fonts</a></td></tr> <tr><td colspan="4"> <hr></td></tr> <tr><th><a name="Index_fn_letter-G">G</a></th><td></td><td></td></tr> <tr><td></td><td valign="top"><a href="Rendering-Engine.html#index-gpu_002dapply"><code>gpu-apply</code></a>:</td><td> </td><td valign="top"><a href="Rendering-Engine.html#Rendering-Engine">Rendering Engine</a></td></tr> @@ -134,20 +175,38 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r <tr><td></td><td valign="top"><a href="Kernel.html#index-key_002drelease_002dhook"><code>key-release-hook</code></a>:</td><td> </td><td valign="top"><a href="Kernel.html#Kernel">Kernel</a></td></tr> <tr><td colspan="4"> <hr></td></tr> <tr><th><a name="Index_fn_letter-L">L</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="Fonts.html#index-load_002dfont"><code>load-font</code></a>:</td><td> </td><td valign="top"><a href="Fonts.html#Fonts">Fonts</a></td></tr> <tr><td></td><td valign="top"><a href="Kernel.html#index-load_002dhook"><code>load-hook</code></a>:</td><td> </td><td valign="top"><a href="Kernel.html#Kernel">Kernel</a></td></tr> <tr><td></td><td valign="top"><a href="Textures.html#index-load_002dimage"><code>load-image</code></a>:</td><td> </td><td valign="top"><a href="Textures.html#Textures">Textures</a></td></tr> +<tr><td></td><td valign="top"><a href="Audio.html#index-load_002dmusic"><code>load-music</code></a>:</td><td> </td><td valign="top"><a href="Audio.html#Audio">Audio</a></td></tr> +<tr><td></td><td valign="top"><a href="Audio.html#index-load_002dsample"><code>load-sample</code></a>:</td><td> </td><td valign="top"><a href="Audio.html#Audio">Audio</a></td></tr> <tr><td colspan="4"> <hr></td></tr> <tr><th><a name="Index_fn_letter-M">M</a></th><td></td><td></td></tr> <tr><td></td><td valign="top"><a href="Kernel.html#index-mouse_002dmove_002dhook"><code>mouse-move-hook</code></a>:</td><td> </td><td valign="top"><a href="Kernel.html#Kernel">Kernel</a></td></tr> <tr><td></td><td valign="top"><a href="Kernel.html#index-mouse_002dpress_002dhook"><code>mouse-press-hook</code></a>:</td><td> </td><td valign="top"><a href="Kernel.html#Kernel">Kernel</a></td></tr> <tr><td></td><td valign="top"><a href="Kernel.html#index-mouse_002drelease_002dhook"><code>mouse-release-hook</code></a>:</td><td> </td><td valign="top"><a href="Kernel.html#Kernel">Kernel</a></td></tr> +<tr><td></td><td valign="top"><a href="Audio.html#index-music_002dpaused_003f"><code>music-paused?</code></a>:</td><td> </td><td valign="top"><a href="Audio.html#Audio">Audio</a></td></tr> +<tr><td></td><td valign="top"><a href="Audio.html#index-music_002dplaying_003f"><code>music-playing?</code></a>:</td><td> </td><td valign="top"><a href="Audio.html#Audio">Audio</a></td></tr> +<tr><td></td><td valign="top"><a href="Audio.html#index-music_002dvolume"><code>music-volume</code></a>:</td><td> </td><td valign="top"><a href="Audio.html#Audio">Audio</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="Index_fn_letter-P">P</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="Audio.html#index-pause_002dmusic"><code>pause-music</code></a>:</td><td> </td><td valign="top"><a href="Audio.html#Audio">Audio</a></td></tr> +<tr><td></td><td valign="top"><a href="Audio.html#index-play_002dmusic"><code>play-music</code></a>:</td><td> </td><td valign="top"><a href="Audio.html#Audio">Audio</a></td></tr> +<tr><td></td><td valign="top"><a href="Audio.html#index-play_002dsample"><code>play-sample</code></a>:</td><td> </td><td valign="top"><a href="Audio.html#Audio">Audio</a></td></tr> <tr><td colspan="4"> <hr></td></tr> <tr><th><a name="Index_fn_letter-Q">Q</a></th><td></td><td></td></tr> <tr><td></td><td valign="top"><a href="Kernel.html#index-quit_002dhook"><code>quit-hook</code></a>:</td><td> </td><td valign="top"><a href="Kernel.html#Kernel">Kernel</a></td></tr> <tr><td colspan="4"> <hr></td></tr> <tr><th><a name="Index_fn_letter-R">R</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="Audio.html#index-resume_002dmusic"><code>resume-music</code></a>:</td><td> </td><td valign="top"><a href="Audio.html#Audio">Audio</a></td></tr> +<tr><td></td><td valign="top"><a href="Audio.html#index-rewind_002dmusic"><code>rewind-music</code></a>:</td><td> </td><td valign="top"><a href="Audio.html#Audio">Audio</a></td></tr> <tr><td></td><td valign="top"><a href="Kernel.html#index-run_002dgame"><code>run-game</code></a>:</td><td> </td><td valign="top"><a href="Kernel.html#Kernel">Kernel</a></td></tr> <tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="Index_fn_letter-S">S</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="Audio.html#index-set_002dmusic_002dvolume_0021"><code>set-music-volume!</code></a>:</td><td> </td><td valign="top"><a href="Audio.html#Audio">Audio</a></td></tr> +<tr><td></td><td valign="top"><a href="Audio.html#index-set_002dsample_002dvolume_0021"><code>set-sample-volume!</code></a>:</td><td> </td><td valign="top"><a href="Audio.html#Audio">Audio</a></td></tr> +<tr><td></td><td valign="top"><a href="Audio.html#index-stop_002dmusic"><code>stop-music</code></a>:</td><td> </td><td valign="top"><a href="Audio.html#Audio">Audio</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> <tr><th><a name="Index_fn_letter-T">T</a></th><td></td><td></td></tr> <tr><td></td><td valign="top"><a href="Kernel.html#index-text_002dinput_002dhook"><code>text-input-hook</code></a>:</td><td> </td><td valign="top"><a href="Kernel.html#Kernel">Kernel</a></td></tr> <tr><td></td><td valign="top"><a href="Kernel.html#index-time"><code>time</code></a>:</td><td> </td><td valign="top"><a href="Kernel.html#Kernel">Kernel</a></td></tr> @@ -156,6 +215,7 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r <tr><td></td><td valign="top"><a href="Kernel.html#index-update_002dhook"><code>update-hook</code></a>:</td><td> </td><td valign="top"><a href="Kernel.html#Kernel">Kernel</a></td></tr> <tr><td colspan="4"> <hr></td></tr> <tr><th><a name="Index_fn_letter-W">W</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="Sprites.html#index-with_002dbatched_002dsprites"><code>with-batched-sprites</code></a>:</td><td> </td><td valign="top"><a href="Sprites.html#Sprites">Sprites</a></td></tr> <tr><td></td><td valign="top"><a href="Rendering-Engine.html#index-with_002dblend_002dmode"><code>with-blend-mode</code></a>:</td><td> </td><td valign="top"><a href="Rendering-Engine.html#Rendering-Engine">Rendering Engine</a></td></tr> <tr><td></td><td valign="top"><a href="Rendering-Engine.html#index-with_002ddepth_002dtest"><code>with-depth-test</code></a>:</td><td> </td><td valign="top"><a href="Rendering-Engine.html#Rendering-Engine">Rendering Engine</a></td></tr> <tr><td></td><td valign="top"><a href="Rendering-Engine.html#index-with_002dframebuffer"><code>with-framebuffer</code></a>:</td><td> </td><td valign="top"><a href="Rendering-Engine.html#Rendering-Engine">Rendering Engine</a></td></tr> @@ -172,6 +232,8 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r <a class="summary-letter" href="#Index_fn_letter-D"><b>D</b></a> +<a class="summary-letter" href="#Index_fn_letter-F"><b>F</b></a> + <a class="summary-letter" href="#Index_fn_letter-G"><b>G</b></a> <a class="summary-letter" href="#Index_fn_letter-K"><b>K</b></a> @@ -180,10 +242,14 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r <a class="summary-letter" href="#Index_fn_letter-M"><b>M</b></a> +<a class="summary-letter" href="#Index_fn_letter-P"><b>P</b></a> + <a class="summary-letter" href="#Index_fn_letter-Q"><b>Q</b></a> <a class="summary-letter" href="#Index_fn_letter-R"><b>R</b></a> +<a class="summary-letter" href="#Index_fn_letter-S"><b>S</b></a> + <a class="summary-letter" href="#Index_fn_letter-T"><b>T</b></a> <a class="summary-letter" href="#Index_fn_letter-U"><b>U</b></a> diff --git a/manuals/chickadee/Input.html b/manuals/chickadee/Input.html index 3c25932..d559126 100644 --- a/manuals/chickadee/Input.html +++ b/manuals/chickadee/Input.html @@ -57,8 +57,31 @@ 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> diff --git a/manuals/chickadee/Installation.html b/manuals/chickadee/Installation.html index f9f3629..a362263 100644 --- a/manuals/chickadee/Installation.html +++ b/manuals/chickadee/Installation.html @@ -57,8 +57,31 @@ 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> diff --git a/manuals/chickadee/Kernel.html b/manuals/chickadee/Kernel.html index c9d635b..589c71e 100644 --- a/manuals/chickadee/Kernel.html +++ b/manuals/chickadee/Kernel.html @@ -57,8 +57,31 @@ 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> @@ -95,10 +118,9 @@ There are many hooks available, so read on to learn about all of them. For information about using Guile’s hook API, see See <a href="http://www.gnu.org/software/guile/manual/html_node/Hooks.html#Hooks">Hooks</a> in <cite>GNU Guile Reference Manual</cite>. </p> <dl> -<dt><a name="index-run_002dgame"></a>Scheme Procedure: <strong>run-game</strong> <em>[#:window-title "Chickadee!"]</em></dt> -<dd><p>[#:window-width 640] [#:window-height 480] [#:window-fullscreen? #f] - [#:update-hz 60] -Start the event loop. This procedure will not return until +<dt><a name="index-run_002dgame"></a>Scheme Procedure: <strong>run-game</strong> <em>[#:window-title "Chickadee!"] [#:window-width 640] [#:window-height 480] [#:window-fullscreen? #f] [#:update-hz 60]</em></dt> +<dd> +<p>Start the event loop. This procedure will not return until <code>abort-game</code> is called. </p> <p>The <code>update-hook</code> will be run <var>update-hz</var> times per second. diff --git a/manuals/chickadee/Lines-and-Shapes.html b/manuals/chickadee/Lines-and-Shapes.html index 01fac7b..13232ab 100644 --- a/manuals/chickadee/Lines-and-Shapes.html +++ b/manuals/chickadee/Lines-and-Shapes.html @@ -30,7 +30,7 @@ http://www.texinfo.org/ (GNU Texinfo). <link href="Index.html#Index" rel="index" title="Index"> <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> <link href="Graphics.html#Graphics" rel="up" title="Graphics"> -<link href="Textures.html#Textures" rel="next" title="Textures"> +<link href="Fonts.html#Fonts" rel="next" title="Fonts"> <link href="Sprites.html#Sprites" rel="prev" title="Sprites"> <style type="text/css"> <!-- @@ -57,8 +57,31 @@ 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> @@ -67,11 +90,28 @@ ul.no-bullet {list-style: none} <a name="Lines-and-Shapes"></a> <div class="header"> <p> -Next: <a href="Textures.html#Textures" accesskey="n" rel="next">Textures</a>, Previous: <a href="Sprites.html#Sprites" accesskey="p" rel="prev">Sprites</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p> +Next: <a href="Fonts.html#Fonts" accesskey="n" rel="next">Fonts</a>, Previous: <a href="Sprites.html#Sprites" accesskey="p" rel="prev">Sprites</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p> </div> <hr> <a name="Lines-and-Shapes-1"></a> -<h4 class="subsection">2.4.3 Lines and Shapes</h4> +<h4 class="subsection">2.4.4 Lines and Shapes</h4> + +<p>Sprites are fun, but sometimes simple, untextured lines and polygons +are desired. That’s where the <code>(chickadee render shapes)</code> module +comes in! +</p> +<dl> +<dt><a name="index-draw_002dline"></a>Scheme Procedure: <strong>draw-line</strong> <em><var>start</var> <var>end</var> [#:thickness 0.5] [#:feather 1.0] [#:cap round] [#:color] [#:shader]</em></dt> +<dd> +<p>Draw a line segment from <var>start</var> to <var>end</var>. The line will be +<var>thickness</var> pixels thick with an antialiased border <var>feather</var> +pixels wide. The line will be colored <var>color</var>. <var>cap</var> +specifies the type of end cap that should be used to terminate the +lines, either <code>none</code>, <code>butt</code>, <code>square</code>, <code>round</code>, +<code>triangle-in</code>, or <code>triangle-out</code>. Advanced users may use +the <var>shader</var> argument to override the built-in line segment +shader. +</p></dd></dl> diff --git a/manuals/chickadee/Math.html b/manuals/chickadee/Math.html index 0204efc..fcf9746 100644 --- a/manuals/chickadee/Math.html +++ b/manuals/chickadee/Math.html @@ -57,8 +57,31 @@ 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> diff --git a/manuals/chickadee/Matrices.html b/manuals/chickadee/Matrices.html index f84f62d..8630efd 100644 --- a/manuals/chickadee/Matrices.html +++ b/manuals/chickadee/Matrices.html @@ -57,8 +57,31 @@ 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> diff --git a/manuals/chickadee/Rectangles.html b/manuals/chickadee/Rectangles.html index 743db15..6d0c9e8 100644 --- a/manuals/chickadee/Rectangles.html +++ b/manuals/chickadee/Rectangles.html @@ -57,8 +57,31 @@ 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> diff --git a/manuals/chickadee/Rendering-Engine.html b/manuals/chickadee/Rendering-Engine.html index b4514db..9bc09da 100644 --- a/manuals/chickadee/Rendering-Engine.html +++ b/manuals/chickadee/Rendering-Engine.html @@ -30,7 +30,7 @@ http://www.texinfo.org/ (GNU Texinfo). <link href="Index.html#Index" rel="index" title="Index"> <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> <link href="Graphics.html#Graphics" rel="up" title="Graphics"> -<link href="Sprites.html#Sprites" rel="next" title="Sprites"> +<link href="Textures.html#Textures" rel="next" title="Textures"> <link href="Graphics.html#Graphics" rel="prev" title="Graphics"> <style type="text/css"> <!-- @@ -57,8 +57,31 @@ 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> @@ -67,7 +90,7 @@ ul.no-bullet {list-style: none} <a name="Rendering-Engine"></a> <div class="header"> <p> -Next: <a href="Sprites.html#Sprites" accesskey="n" rel="next">Sprites</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p> +Next: <a href="Textures.html#Textures" accesskey="n" rel="next">Textures</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p> </div> <hr> <a name="Rendering-Engine-1"></a> @@ -90,8 +113,8 @@ would be tedious to have to have to specify them each time <code>(chickadee render)</code> module. </p> <dl> -<dt><a name="index-gpu_002dapply"></a>Scheme Syntax: <strong>gpu-apply</strong> <em><var>shader</var> <var>vertex-array</var> [#:uniform-key <var>uniform-value</var> ...]</em></dt> -<dt><a name="index-gpu_002dapply_002a"></a>Scheme Syntax: <strong>gpu-apply*</strong> <em><var>shader</var> <var>vertex-array</var> <var>count</var> [#:uniform-key <var>uniform-value</var> ...]</em></dt> +<dt><a name="index-gpu_002dapply"></a>Scheme Syntax: <strong>gpu-apply</strong> <em><var>shader</var> <var>vertex-array</var> [#:uniform-key <var>uniform-value</var> ...]</em></dt> +<dt><a name="index-gpu_002dapply_002a"></a>Scheme Syntax: <strong>gpu-apply*</strong> <em><var>shader</var> <var>vertex-array</var> <var>count</var> [#:uniform-key <var>uniform-value</var> ...]</em></dt> <dd> <p>Render <var>vertex-array</var> using <var>shader</var> with the uniform values specified in the following keyword arguments. @@ -174,7 +197,7 @@ is <code>#f</code>, or enabled otherwise. <hr> <div class="header"> <p> -Next: <a href="Sprites.html#Sprites" accesskey="n" rel="next">Sprites</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p> +Next: <a href="Textures.html#Textures" accesskey="n" rel="next">Textures</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p> </div> diff --git a/manuals/chickadee/Requirements.html b/manuals/chickadee/Requirements.html index 53927d7..d3e9918 100644 --- a/manuals/chickadee/Requirements.html +++ b/manuals/chickadee/Requirements.html @@ -57,8 +57,31 @@ 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> diff --git a/manuals/chickadee/Shaders.html b/manuals/chickadee/Shaders.html index a0e7637..7b3a2a0 100644 --- a/manuals/chickadee/Shaders.html +++ b/manuals/chickadee/Shaders.html @@ -57,8 +57,31 @@ 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> @@ -71,7 +94,7 @@ Next: <a href="Framebuffers.html#Framebuffers" accesskey="n" rel="next">Framebuf </div> <hr> <a name="Shaders-1"></a> -<h4 class="subsection">2.4.7 Shaders</h4> +<h4 class="subsection">2.4.8 Shaders</h4> <p>Shaders are programs for the GPU to evaluate. They are written in the OpenGL Shading Language, or GLSL. Chickadee does not currently diff --git a/manuals/chickadee/Sprites.html b/manuals/chickadee/Sprites.html index 700941b..0c114bd 100644 --- a/manuals/chickadee/Sprites.html +++ b/manuals/chickadee/Sprites.html @@ -31,7 +31,7 @@ http://www.texinfo.org/ (GNU Texinfo). <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> <link href="Graphics.html#Graphics" rel="up" title="Graphics"> <link href="Lines-and-Shapes.html#Lines-and-Shapes" rel="next" title="Lines and Shapes"> -<link href="Rendering-Engine.html#Rendering-Engine" rel="prev" title="Rendering Engine"> +<link href="Textures.html#Textures" rel="prev" title="Textures"> <style type="text/css"> <!-- a.summary-letter {text-decoration: none} @@ -57,8 +57,31 @@ 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> @@ -67,12 +90,92 @@ ul.no-bullet {list-style: none} <a name="Sprites"></a> <div class="header"> <p> -Next: <a href="Lines-and-Shapes.html#Lines-and-Shapes" accesskey="n" rel="next">Lines and Shapes</a>, Previous: <a href="Rendering-Engine.html#Rendering-Engine" accesskey="p" rel="prev">Rendering Engine</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p> +Next: <a href="Lines-and-Shapes.html#Lines-and-Shapes" accesskey="n" rel="next">Lines and Shapes</a>, Previous: <a href="Textures.html#Textures" accesskey="p" rel="prev">Textures</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p> </div> <hr> <a name="Sprites-1"></a> -<h4 class="subsection">2.4.2 Sprites</h4> +<h4 class="subsection">2.4.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. In Chickadee, bitmaps are +stored in textures (see <a href="Textures.html#Textures">Textures</a>) and can be used to draw sprites +via the <code>draw-sprite</code> procedure. +</p> +<dl> +<dt><a name="index-draw_002dsprite"></a>Scheme Procedure: <strong>draw-sprite</strong> <em><var>texture</var> <var>region</var> [#:scale] [#:rotation] [#:blend-mode alpha] [#:texture-region] [#:shader]</em></dt> +</dl> + +<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>, which will +quickly lead to poor performance. To deal with this, a technique +known as “sprite batching” can be used. Instead of drawing each +sprite immediately, the sprite batch will build up a large of buffer +of sprites to draw and defer rendering until the last possible moment. +Batching isn’t a panacea, though. Batching only works if the sprites +being drawn share as much in common as possible. Every time you draw +a sprite with a different texture or blend mode, the batch will be +sent off to the GPU. Therefore, batching is most useful if you +minimize such changes. A good strategy for reducing texture changes +is to stuff many bitmaps into a single image file and create a +“texture atlas” (see <a href="Textures.html#Textures">Textures</a>) to access the sub-images within. +</p> +<p>Taking advantage of sprite batching in Chickadee is easy, just wrap +the code that is calling <code>draw-sprite</code> a lot in the +<code>with-batched-sprites</code> form. +</p> +<dl> +<dt><a name="index-with_002dbatched_002dsprites"></a>Scheme Syntax: <strong>with-batched-sprites</strong> <em><var>body</var> …</em></dt> +<dd><p>Use batched rendering for all <code>draw-sprite</code> calls within +<var>body</var>. +</p></dd></dl> + +<p>With a basic sprite abstraction in place, it’s possible to build other +abstractions on top of it. One such example is the “nine patch”. A +nine patch is a sprite that can be rendered at various sizes without +becoming distorted. This is achieved by diving up the sprite into +nine regions: +</p> +<ul> +<li> the center, which can be scaled horizontally and vertically +</li><li> the four corners, which can never be scaled +</li><li> the left and right sides, which can be scaled vertically +</li><li> the top and bottom sides, which can be scaled horizontally +</li></ul> +<p>The one caveat is that the bitmap regions must be designed in such a +way so that they are not distorted when stretched along the affected +axes. For example, that means that the top and bottom sides could +have varying colored pixels vertically, but not horizontally. +</p> +<p>The most common application of this technique is for graphical user +interface widgets like buttons and dialog boxes. By using a nine +patch, they can be rendered at any size without unappealing scaling +artifacts. +</p> +<dl> +<dt><a name="index-draw_002dnine_002dpatch"></a>Scheme Procedure: <strong>draw-nine-patch</strong> <em><var>texture</var> <var>region</var> [#:margin 0] [#:top-margin margin] [#:bottom-margin margin] [#:left-margin margin] [#:right-margin margin] [#:texture-region] [#:scale] [#:rotation] [#:blend-mode alpha] [#:shader]</em></dt> +<dd> +<p>Draw a nine patch sprite. A nine patch sprite renders <var>texture</var> +as a <var>width</var> x <var>height</var> rectangle whose stretchable areas are +defined by the given margin measurements <var>top-margin</var>, +<var>bottom-margin</var>, <var>left-margin</var>, and <var>right-margin</var>. The +<var>margin</var> argument may be used to configure all four margins at +once. +</p> +<p>Refer to <code>draw-sprite</code> (see <a href="#Sprites">Sprites</a>) for information about +the other arguments. +</p></dd></dl> + +<hr> +<div class="header"> +<p> +Next: <a href="Lines-and-Shapes.html#Lines-and-Shapes" accesskey="n" rel="next">Lines and Shapes</a>, Previous: <a href="Textures.html#Textures" accesskey="p" rel="prev">Textures</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p> +</div> diff --git a/manuals/chickadee/Textures.html b/manuals/chickadee/Textures.html index a31d6fb..66d9fe7 100644 --- a/manuals/chickadee/Textures.html +++ b/manuals/chickadee/Textures.html @@ -30,8 +30,8 @@ http://www.texinfo.org/ (GNU Texinfo). <link href="Index.html#Index" rel="index" title="Index"> <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> <link href="Graphics.html#Graphics" rel="up" title="Graphics"> -<link href="Blending-and-Depth-Testing.html#Blending-and-Depth-Testing" rel="next" title="Blending and Depth Testing"> -<link href="Lines-and-Shapes.html#Lines-and-Shapes" rel="prev" title="Lines and Shapes"> +<link href="Sprites.html#Sprites" rel="next" title="Sprites"> +<link href="Rendering-Engine.html#Rendering-Engine" rel="prev" title="Rendering Engine"> <style type="text/css"> <!-- a.summary-letter {text-decoration: none} @@ -57,8 +57,31 @@ 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> @@ -67,16 +90,15 @@ ul.no-bullet {list-style: none} <a name="Textures"></a> <div class="header"> <p> -Next: <a href="Blending-and-Depth-Testing.html#Blending-and-Depth-Testing" accesskey="n" rel="next">Blending and Depth Testing</a>, Previous: <a href="Lines-and-Shapes.html#Lines-and-Shapes" accesskey="p" rel="prev">Lines and Shapes</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p> +Next: <a href="Sprites.html#Sprites" accesskey="n" rel="next">Sprites</a>, Previous: <a href="Rendering-Engine.html#Rendering-Engine" accesskey="p" rel="prev">Rendering Engine</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p> </div> <hr> <a name="Textures-1"></a> -<h4 class="subsection">2.4.4 Textures</h4> +<h4 class="subsection">2.4.2 Textures</h4> <dl> -<dt><a name="index-load_002dimage"></a>Scheme Procedure: <strong>load-image</strong> <em><var>file</var> [#:min-filter nearest]</em></dt> -<dd><p>[#:mag-filter nearest] [#:wrap-s repeat] [#:wrap-t repeat] -</p> +<dt><a name="index-load_002dimage"></a>Scheme Procedure: <strong>load-image</strong> <em><var>file</var> [#:min-filter nearest] [#:mag-filter nearest] [#:wrap-s repeat] [#:wrap-t repeat]</em></dt> +<dd> <p>Load the image data from <var>file</var> and return a new texture object. </p> <p><var>min-filter</var> and <var>mag-filter</var> describe the method that should diff --git a/manuals/chickadee/Vectors.html b/manuals/chickadee/Vectors.html index 8a624ff..eb79149 100644 --- a/manuals/chickadee/Vectors.html +++ b/manuals/chickadee/Vectors.html @@ -57,8 +57,31 @@ 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> diff --git a/manuals/chickadee/Vertex-Arrays.html b/manuals/chickadee/Vertex-Arrays.html index 72b0273..9b3f5b1 100644 --- a/manuals/chickadee/Vertex-Arrays.html +++ b/manuals/chickadee/Vertex-Arrays.html @@ -57,8 +57,31 @@ 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> @@ -71,7 +94,7 @@ Next: <a href="Shaders.html#Shaders" accesskey="n" rel="next">Shaders</a>, Previ </div> <hr> <a name="Vertex-Arrays-1"></a> -<h4 class="subsection">2.4.6 Vertex Arrays</h4> +<h4 class="subsection">2.4.7 Vertex Arrays</h4> diff --git a/manuals/chickadee/Viewports.html b/manuals/chickadee/Viewports.html index f55d386..c54e7c9 100644 --- a/manuals/chickadee/Viewports.html +++ b/manuals/chickadee/Viewports.html @@ -57,8 +57,31 @@ 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> @@ -71,7 +94,7 @@ Previous: <a href="Framebuffers.html#Framebuffers" accesskey="p" rel="prev">Fram </div> <hr> <a name="Viewports-1"></a> -<h4 class="subsection">2.4.9 Viewports</h4> +<h4 class="subsection">2.4.10 Viewports</h4> diff --git a/manuals/chickadee/index.html b/manuals/chickadee/index.html index d044f9f..b10ea67 100644 --- a/manuals/chickadee/index.html +++ b/manuals/chickadee/index.html @@ -56,8 +56,31 @@ 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> @@ -89,14 +112,15 @@ ul.no-bullet {list-style: none} <li><a name="toc-Graphics-1" href="Graphics.html#Graphics">2.4 Graphics</a> <ul class="no-bullet"> <li><a name="toc-Rendering-Engine-1" href="Rendering-Engine.html#Rendering-Engine">2.4.1 Rendering Engine</a></li> - <li><a name="toc-Sprites-1" href="Sprites.html#Sprites">2.4.2 Sprites</a></li> - <li><a name="toc-Lines-and-Shapes-1" href="Lines-and-Shapes.html#Lines-and-Shapes">2.4.3 Lines and Shapes</a></li> - <li><a name="toc-Textures-1" href="Textures.html#Textures">2.4.4 Textures</a></li> - <li><a name="toc-Blending-and-Depth-Testing-1" href="Blending-and-Depth-Testing.html#Blending-and-Depth-Testing">2.4.5 Blending and Depth Testing</a></li> - <li><a name="toc-Vertex-Arrays-1" href="Vertex-Arrays.html#Vertex-Arrays">2.4.6 Vertex Arrays</a></li> - <li><a name="toc-Shaders-1" href="Shaders.html#Shaders">2.4.7 Shaders</a></li> - <li><a name="toc-Framebuffers-1" href="Framebuffers.html#Framebuffers">2.4.8 Framebuffers</a></li> - <li><a name="toc-Viewports-1" href="Viewports.html#Viewports">2.4.9 Viewports</a></li> + <li><a name="toc-Textures-1" href="Textures.html#Textures">2.4.2 Textures</a></li> + <li><a name="toc-Sprites-1" href="Sprites.html#Sprites">2.4.3 Sprites</a></li> + <li><a name="toc-Lines-and-Shapes-1" href="Lines-and-Shapes.html#Lines-and-Shapes">2.4.4 Lines and Shapes</a></li> + <li><a name="toc-Fonts-1" href="Fonts.html#Fonts">2.4.5 Fonts</a></li> + <li><a name="toc-Blending-and-Depth-Testing-1" href="Blending-and-Depth-Testing.html#Blending-and-Depth-Testing">2.4.6 Blending and Depth Testing</a></li> + <li><a name="toc-Vertex-Arrays-1" href="Vertex-Arrays.html#Vertex-Arrays">2.4.7 Vertex Arrays</a></li> + <li><a name="toc-Shaders-1" href="Shaders.html#Shaders">2.4.8 Shaders</a></li> + <li><a name="toc-Framebuffers-1" href="Framebuffers.html#Framebuffers">2.4.9 Framebuffers</a></li> + <li><a name="toc-Viewports-1" href="Viewports.html#Viewports">2.4.10 Viewports</a></li> </ul></li> <li><a name="toc-Audio-1" href="Audio.html#Audio">2.5 Audio</a></li> </ul></li> |