bringing docs up to date

This commit is contained in:
2020-02-13 17:14:29 -08:00
parent 659cd98a1f
commit fcfa40e335
112 changed files with 869 additions and 1837 deletions

View File

@@ -1,288 +1,63 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source to the Rust file `src/canvas/canvas_frame.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>canvas_frame.rs.html -- source</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc source"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../sfml_rust/index.html'><div class='logo-container'><img src='../../../rust-logo.png' alt='logo'></div></a></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form js-only"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><pre class="line-numbers"><span id="1"> 1</span>
<span id="2"> 2</span>
<span id="3"> 3</span>
<span id="4"> 4</span>
<span id="5"> 5</span>
<span id="6"> 6</span>
<span id="7"> 7</span>
<span id="8"> 8</span>
<span id="9"> 9</span>
<span id="10"> 10</span>
<span id="11"> 11</span>
<span id="12"> 12</span>
<span id="13"> 13</span>
<span id="14"> 14</span>
<span id="15"> 15</span>
<span id="16"> 16</span>
<span id="17"> 17</span>
<span id="18"> 18</span>
<span id="19"> 19</span>
<span id="20"> 20</span>
<span id="21"> 21</span>
<span id="22"> 22</span>
<span id="23"> 23</span>
<span id="24"> 24</span>
<span id="25"> 25</span>
<span id="26"> 26</span>
<span id="27"> 27</span>
<span id="28"> 28</span>
<span id="29"> 29</span>
<span id="30"> 30</span>
<span id="31"> 31</span>
<span id="32"> 32</span>
<span id="33"> 33</span>
<span id="34"> 34</span>
<span id="35"> 35</span>
<span id="36"> 36</span>
<span id="37"> 37</span>
<span id="38"> 38</span>
<span id="39"> 39</span>
<span id="40"> 40</span>
<span id="41"> 41</span>
<span id="42"> 42</span>
<span id="43"> 43</span>
<span id="44"> 44</span>
<span id="45"> 45</span>
<span id="46"> 46</span>
<span id="47"> 47</span>
<span id="48"> 48</span>
<span id="49"> 49</span>
<span id="50"> 50</span>
<span id="51"> 51</span>
<span id="52"> 52</span>
<span id="53"> 53</span>
<span id="54"> 54</span>
<span id="55"> 55</span>
<span id="56"> 56</span>
<span id="57"> 57</span>
<span id="58"> 58</span>
<span id="59"> 59</span>
<span id="60"> 60</span>
<span id="61"> 61</span>
<span id="62"> 62</span>
<span id="63"> 63</span>
<span id="64"> 64</span>
<span id="65"> 65</span>
<span id="66"> 66</span>
<span id="67"> 67</span>
<span id="68"> 68</span>
<span id="69"> 69</span>
<span id="70"> 70</span>
<span id="71"> 71</span>
<span id="72"> 72</span>
<span id="73"> 73</span>
<span id="74"> 74</span>
<span id="75"> 75</span>
<span id="76"> 76</span>
<span id="77"> 77</span>
<span id="78"> 78</span>
<span id="79"> 79</span>
<span id="80"> 80</span>
<span id="81"> 81</span>
<span id="82"> 82</span>
<span id="83"> 83</span>
<span id="84"> 84</span>
<span id="85"> 85</span>
<span id="86"> 86</span>
<span id="87"> 87</span>
<span id="88"> 88</span>
<span id="89"> 89</span>
<span id="90"> 90</span>
<span id="91"> 91</span>
<span id="92"> 92</span>
<span id="93"> 93</span>
<span id="94"> 94</span>
<span id="95"> 95</span>
<span id="96"> 96</span>
<span id="97"> 97</span>
<span id="98"> 98</span>
<span id="99"> 99</span>
<span id="100">100</span>
<span id="101">101</span>
<span id="102">102</span>
<span id="103">103</span>
<span id="104">104</span>
<span id="105">105</span>
<span id="106">106</span>
<span id="107">107</span>
<span id="108">108</span>
<span id="109">109</span>
<span id="110">110</span>
<span id="111">111</span>
<span id="112">112</span>
<span id="113">113</span>
<span id="114">114</span>
<span id="115">115</span>
<span id="116">116</span>
<span id="117">117</span>
<span id="118">118</span>
<span id="119">119</span>
<span id="120">120</span>
<span id="121">121</span>
<span id="122">122</span>
<span id="123">123</span>
<span id="124">124</span>
<span id="125">125</span>
<span id="126">126</span>
<span id="127">127</span>
<span id="128">128</span>
<span id="129">129</span>
<span id="130">130</span>
<span id="131">131</span>
<span id="132">132</span>
<span id="133">133</span>
<span id="134">134</span>
<span id="135">135</span>
<span id="136">136</span>
<span id="137">137</span>
<span id="138">138</span>
<span id="139">139</span>
<span id="140">140</span>
<span id="141">141</span>
<span id="142">142</span>
<span id="143">143</span>
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source to the Rust file `src/canvas/canvas_frame.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>canvas_frame.rs.html -- source</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc source"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../sfml_rust/index.html'><div class='logo-container'><img src='../../../rust-logo.png' alt='logo'></div></a></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form js-only"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><pre class="line-numbers"><span id="1"> 1</span>
<span id="2"> 2</span>
<span id="3"> 3</span>
<span id="4"> 4</span>
<span id="5"> 5</span>
<span id="6"> 6</span>
<span id="7"> 7</span>
<span id="8"> 8</span>
<span id="9"> 9</span>
<span id="10">10</span>
<span id="11">11</span>
<span id="12">12</span>
<span id="13">13</span>
<span id="14">14</span>
<span id="15">15</span>
<span id="16">16</span>
<span id="17">17</span>
<span id="18">18</span>
<span id="19">19</span>
<span id="20">20</span>
<span id="21">21</span>
<span id="22">22</span>
<span id="23">23</span>
<span id="24">24</span>
<span id="25">25</span>
<span id="26">26</span>
<span id="27">27</span>
<span id="28">28</span>
<span id="29">29</span>
<span id="30">30</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">util</span>::<span class="ident">vertex_3d</span>::{<span class="ident">Vertex3D</span>};
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">sync</span>::<span class="ident">Arc</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">collections</span>::<span class="ident">HashMap</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">canvas_state</span>::{<span class="ident">Drawable</span>};
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">hash</span>::<span class="ident">Hash</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="kw-2">*</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">shader</span>::<span class="ident">dynamic_vertex</span>::<span class="ident">RuntimeVertexDef</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">handles</span>::{<span class="ident">CanvasTextureHandle</span>, <span class="ident">CanvasImageHandle</span>, <span class="ident">CanvasFontHandle</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">handles</span>::{<span class="ident">CanvasTextureHandle</span>, <span class="ident">CanvasImageHandle</span>, <span class="ident">CanvasFontHandle</span>, <span class="ident">Handle</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">shader</span>::<span class="ident">text_shader</span>::<span class="ident">GlyphInstance</span>;
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">pipeline</span>::<span class="ident">vertex</span>::<span class="ident">Vertex</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">any</span>::<span class="ident">Any</span>;
<span class="doccomment">/// I dont know why this isnt working</span>
<span class="doccomment">/// fqowiejf</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">CanvasFrame</span> {
<span class="kw">pub</span> <span class="ident">colored_drawables</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">RuntimeVertexDef</span><span class="op">&gt;</span>,
<span class="kw">pub</span> <span class="ident">textured_drawables</span>: <span class="ident">HashMap</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasTextureHandle</span><span class="op">&gt;</span>, <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">RuntimeVertexDef</span><span class="op">&gt;</span><span class="op">&gt;</span><span class="op">&gt;</span>,
<span class="kw">pub</span> <span class="ident">image_drawables</span>: <span class="ident">HashMap</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasImageHandle</span><span class="op">&gt;</span>, <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">RuntimeVertexDef</span><span class="op">&gt;</span><span class="op">&gt;</span><span class="op">&gt;</span>,
<span class="kw">pub</span> <span class="ident">text_drawables</span>: <span class="ident">HashMap</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasFontHandle</span><span class="op">&gt;</span>, <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">GlyphInstance</span><span class="op">&gt;</span><span class="op">&gt;</span>
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">VertexTypes</span>;
<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">DrawableTest</span> {
<span class="kw">fn</span> <span class="ident">get</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">VertexTypes</span>;
}
<span class="comment">/*
This is sort of the beginning of our interface with the user definable sprites.
Will be taking in multiple type of items
TEXT
FontHandle
VertexDefintion
color
position
instances (string)
Textured
TextureHandle
VertexDefintion
position
coords
size
Vertex definition is directly correlated to the compiled code. How do I bucket these
I guess I could store them and set handles like I do textures
The only ent that can create these vertex handles is the vkprocessor.
So Text can only get a vertex definition by going like shader.get_definition()
Text
FontHandle
VertexHandle
Drawable must include
shader_handle (but how to I get this to the text? this is runtime)
Okay, no. Maybe a default shader type of setup. With a shader handle override????
Type: Text
Textured
Img
Color
frame.draw(text) {
text.type == TEXT { // When it matches to default text shader
text_shader.get_definition()
text_shader.get_pipeline()
}
...
else { // When the user passes in a shader
text.shader_handle.get_definition()
text.shader_handle.get_pipeline()
}
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Default</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">CanvasFrameTest</span> {
<span class="kw">pub</span> <span class="ident">map</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">VertexTypes</span><span class="op">&gt;</span>,
}
// Has default shader
let text = Text::new(&quot;asdoif&quot;);
let frame = CanvasFrame::new();
frame.draw(text);
vkprocessor.run(frame);
*/</span>
<span class="kw">impl</span> <span class="ident">CanvasFrame</span> {
<span class="doccomment">/// Creates a bare canvas frame with empty accumulators a</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">CanvasFrame</span> {
<span class="ident">CanvasFrame</span> {
<span class="ident">colored_drawables</span>: <span class="macro">vec</span><span class="macro">!</span>[],
<span class="ident">textured_drawables</span>: <span class="ident">Default</span>::<span class="ident">default</span>(),
<span class="ident">image_drawables</span>: <span class="ident">Default</span>::<span class="ident">default</span>(),
<span class="ident">text_drawables</span>: <span class="ident">Default</span>::<span class="ident">default</span>()
}
}
<span class="comment">// TODO: Fix this for text and fonts</span>
<span class="doccomment">/// Accumulates the drawables collected Vertex2D&#39;s</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">draw</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">drawable</span>: <span class="kw-2">&amp;</span><span class="kw">dyn</span> <span class="ident">Drawable</span>) {
<span class="kw">match</span> <span class="ident">drawable</span>.<span class="ident">get_texture_handle</span>() {
<span class="prelude-val">Some</span>(<span class="ident">handle</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="self">self</span>.<span class="ident">textured_drawables</span>
.<span class="ident">entry</span>(<span class="ident">handle</span>.<span class="ident">clone</span>())
.<span class="ident">or_insert</span>(<span class="ident">Vec</span>::<span class="ident">new</span>())
.<span class="ident">push</span>(<span class="ident">drawable</span>.<span class="ident">collect</span>());
}
<span class="prelude-val">None</span> <span class="op">=</span><span class="op">&gt;</span> {
<span class="kw">match</span> <span class="ident">drawable</span>.<span class="ident">get_image_handle</span>() {
<span class="prelude-val">Some</span>(<span class="ident">handle</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="self">self</span>.<span class="ident">image_drawables</span>
.<span class="ident">entry</span>(<span class="ident">handle</span>.<span class="ident">clone</span>())
.<span class="ident">or_insert</span>(<span class="ident">Vec</span>::<span class="ident">new</span>())
.<span class="ident">push</span>(<span class="ident">drawable</span>.<span class="ident">collect</span>());
}
<span class="prelude-val">None</span> <span class="op">=</span><span class="op">&gt;</span> {
<span class="self">self</span>.<span class="ident">colored_drawables</span>.<span class="ident">extend</span>(<span class="ident">drawable</span>.<span class="ident">collect</span>());
}
}
}
}
<span class="kw">impl</span> <span class="ident">CanvasFrameTest</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">draw</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">drawable</span>: <span class="kw-2">&amp;</span><span class="kw">dyn</span> <span class="ident">DrawableTest</span>) {
<span class="self">self</span>.<span class="ident">map</span>.<span class="ident">push</span>(<span class="ident">drawable</span>.<span class="ident">get</span>());
}
}
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">GenericCanvasFrame</span><span class="op">&lt;</span><span class="ident">H</span>, <span class="ident">V</span>, <span class="ident">In</span><span class="op">&gt;</span> {
<span class="ident">frame_data</span>: <span class="ident">HashMap</span><span class="op">&lt;</span><span class="ident">H</span>, <span class="ident">Vec</span><span class="op">&lt;</span>(<span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">V</span><span class="op">&gt;</span>, <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">In</span><span class="op">&gt;</span>)<span class="op">&gt;</span><span class="op">&gt;</span>
}
<span class="comment">//</span>
<span class="comment">//impl&lt;V, In&gt; GenericCanvasFrame&lt;Vertex3D, V, In&gt; {</span>
<span class="comment">//</span>
<span class="comment">// /// Creates a bare canvas frame with empty accumulators</span>
<span class="comment">// pub fn new() -&gt; GenericCanvasFrame&lt;Vertex3D, V, In&gt; {</span>
<span class="comment">// GenericCanvasFrame {</span>
<span class="comment">// frame_data: Default::default()</span>
<span class="comment">// }</span>
<span class="comment">// }</span>
<span class="comment">//</span>
<span class="comment">// pub fn draw(&amp;mut self, drawable: &amp;dyn DrawableTest&lt;V, Vertex3D, In&gt;) {</span>
<span class="comment">// self.frame_data</span>
<span class="comment">// .entry(drawable.get_handle().clone())</span>
<span class="comment">// .or_insert(Vec::new())</span>
<span class="comment">// .push((drawable.get_vertices(), drawable.get_instances()));</span>
<span class="comment">// }</span>
<span class="comment">//}</span></pre></div>
</pre></div>
</section><section id="search" class="content hidden"></section><section class="footer"></section><aside id="help" class="hidden"><div><h1 class="hidden">Help</h1><div class="shortcuts"><h2>Keyboard Shortcuts</h2><dl><dt><kbd>?</kbd></dt><dd>Show this help dialog</dd><dt><kbd>S</kbd></dt><dd>Focus the search field</dd><dt><kbd></kbd></dt><dd>Move up in search results</dd><dt><kbd></kbd></dt><dd>Move down in search results</dd><dt><kbd></kbd></dt><dd>Switch tab</dd><dt><kbd>&#9166;</kbd></dt><dd>Go to active search result</dd><dt><kbd>+</kbd></dt><dd>Expand all sections</dd><dt><kbd>-</kbd></dt><dd>Collapse all sections</dd></dl></div><div class="infos"><h2>Search Tricks</h2><p>Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to restrict the search to a given type.</p><p>Accepted types are: <code>fn</code>, <code>mod</code>, <code>struct</code>, <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, and <code>const</code>.</p><p>Search functions by type signature (e.g., <code>vec -> usize</code> or <code>* -> vec</code>)</p><p>Search multiple things at once by splitting your query with comma (e.g., <code>str,u8</code> or <code>String,struct:Vec,test</code>)</p></div></div></aside><script>window.rootPath = "../../../";window.currentCrate = "sfml_rust";</script><script src="../../../aliases.js"></script><script src="../../../main.js"></script><script src="../../../source-script.js"></script><script src="../../../source-files.js"></script><script defer src="../../../search-index.js"></script></body></html>

View File

@@ -584,79 +584,12 @@
<span id="584">584</span>
<span id="585">585</span>
<span id="586">586</span>
<span id="587">587</span>
<span id="588">588</span>
<span id="589">589</span>
<span id="590">590</span>
<span id="591">591</span>
<span id="592">592</span>
<span id="593">593</span>
<span id="594">594</span>
<span id="595">595</span>
<span id="596">596</span>
<span id="597">597</span>
<span id="598">598</span>
<span id="599">599</span>
<span id="600">600</span>
<span id="601">601</span>
<span id="602">602</span>
<span id="603">603</span>
<span id="604">604</span>
<span id="605">605</span>
<span id="606">606</span>
<span id="607">607</span>
<span id="608">608</span>
<span id="609">609</span>
<span id="610">610</span>
<span id="611">611</span>
<span id="612">612</span>
<span id="613">613</span>
<span id="614">614</span>
<span id="615">615</span>
<span id="616">616</span>
<span id="617">617</span>
<span id="618">618</span>
<span id="619">619</span>
<span id="620">620</span>
<span id="621">621</span>
<span id="622">622</span>
<span id="623">623</span>
<span id="624">624</span>
<span id="625">625</span>
<span id="626">626</span>
<span id="627">627</span>
<span id="628">628</span>
<span id="629">629</span>
<span id="630">630</span>
<span id="631">631</span>
<span id="632">632</span>
<span id="633">633</span>
<span id="634">634</span>
<span id="635">635</span>
<span id="636">636</span>
<span id="637">637</span>
<span id="638">638</span>
<span id="639">639</span>
<span id="640">640</span>
<span id="641">641</span>
<span id="642">642</span>
<span id="643">643</span>
<span id="644">644</span>
<span id="645">645</span>
<span id="646">646</span>
<span id="647">647</span>
<span id="648">648</span>
<span id="649">649</span>
<span id="650">650</span>
<span id="651">651</span>
<span id="652">652</span>
<span id="653">653</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">command_buffer</span>::{<span class="ident">AutoCommandBufferBuilder</span>, <span class="ident">DynamicState</span>};
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">collections</span>::{<span class="ident">HashMap</span>, <span class="ident">HashSet</span>};
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">buffer</span>::{<span class="ident">BufferAccess</span>, <span class="ident">BufferUsage</span>, <span class="ident">ImmutableBuffer</span>, <span class="ident">CpuAccessibleBuffer</span>};
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">sync</span>::<span class="ident">Arc</span>;
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">format</span>::{<span class="ident">ClearValue</span>, <span class="ident">Format</span>, <span class="ident">R8Unorm</span>};
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">format</span>::{<span class="ident">ClearValue</span>, <span class="ident">Format</span>, <span class="ident">R8Unorm</span>, <span class="ident">ClearValuesTuple</span>};
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">framebuffer</span>::{<span class="ident">FramebufferAbstract</span>, <span class="ident">Framebuffer</span>, <span class="ident">RenderPass</span>, <span class="ident">RenderPassAbstract</span>};
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">device</span>::{<span class="ident">Device</span>, <span class="ident">Queue</span>};
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">instance</span>::<span class="ident">PhysicalDevice</span>;
@@ -672,59 +605,24 @@
<span class="kw">use</span> <span class="ident">winit</span>::<span class="ident">Window</span>;
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">pipeline</span>::<span class="ident">viewport</span>::<span class="ident">Viewport</span>;
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">descriptor</span>::<span class="ident">descriptor</span>::<span class="ident">DescriptorDescTy</span>::<span class="ident">TexelBuffer</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">canvas_frame</span>::<span class="ident">CanvasFrame</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">canvas_frame</span>::{<span class="ident">CanvasFrameTest</span>};
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">hash</span>::<span class="ident">Hash</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">util</span>::<span class="ident">vertex_3d</span>::{<span class="ident">Vertex3D</span>, <span class="ident">TextVertex3D</span>};
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">pipeline</span>::<span class="ident">depth_stencil</span>::{<span class="ident">StencilFaceFlags</span>, <span class="ident">DynamicStencilValue</span>};
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">memory</span>::<span class="ident">pool</span>::<span class="ident">PotentialDedicatedAllocation</span>::<span class="ident">Generic</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">borrow</span>::<span class="ident">Borrow</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">fs</span>::<span class="ident">File</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">io</span>::<span class="ident">Read</span>;
<span class="kw">use</span> <span class="ident">rusttype</span>::{<span class="ident">Font</span>, <span class="ident">PositionedGlyph</span>, <span class="ident">Scale</span>, <span class="ident">Rect</span>, <span class="ident">point</span>, <span class="ident">GlyphId</span>};
<span class="kw">use</span> <span class="ident">rusttype</span>::{<span class="ident">Font</span>, <span class="ident">PositionedGlyph</span>, <span class="ident">Scale</span>, <span class="ident">Rect</span>, <span class="ident">point</span>, <span class="ident">GlyphId</span>, <span class="ident">Line</span>, <span class="ident">Curve</span>, <span class="ident">Segment</span>};
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">pipeline</span>::<span class="ident">vertex</span>::<span class="ident">VertexDefinition</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">shader</span>::<span class="ident">dynamic_vertex</span>::<span class="ident">RuntimeVertexDef</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">handles</span>::{<span class="ident">CanvasTextureHandle</span>, <span class="ident">CanvasImageHandle</span>, <span class="ident">CanvasFontHandle</span>, <span class="ident">CompiledGraphicsPipelineHandle</span>, <span class="ident">Handle</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">handles</span>::{<span class="ident">CanvasTextureHandle</span>, <span class="ident">CanvasImageHandle</span>, <span class="ident">CanvasFontHandle</span>, <span class="ident">CompiledShaderHandle</span>, <span class="ident">Handle</span>, <span class="ident">DrawableHandle</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">gpu_buffers</span>::{<span class="ident">CanvasImage</span>, <span class="ident">CanvasTexture</span>, <span class="ident">CanvasFont</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">shader</span>::<span class="ident">shader_common</span>::<span class="ident">CompiledGraphicsPipeline</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">shader</span>::<span class="ident">generic_shader</span>::<span class="ident">GenericShader</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">VertexTypes</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">util</span>::<span class="ident">vertex</span>::{<span class="ident">TextVertex3D</span>, <span class="ident">TextureVertex2D</span>, <span class="ident">ImageVertex2D</span>, <span class="ident">ColorVertex2D</span>, <span class="ident">CanvasFrameAllocation</span>};
<span class="comment">// I don&#39;t think this is going to work without getting into Box&#39;ing</span>
<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">DrawableTest</span><span class="op">&lt;</span><span class="ident">V</span>, <span class="ident">H</span>, <span class="ident">In</span><span class="op">&gt;</span> {
<span class="kw">fn</span> <span class="ident">get_vertices</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">V</span><span class="op">&gt;</span>;
<span class="kw">fn</span> <span class="ident">get_instances</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">In</span><span class="op">&gt;</span>;
<span class="kw">fn</span> <span class="ident">get_handle</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">H</span>;
}
<span class="doccomment">/// A drawable object can be passed into a CanvasFrame to be rendered</span>
<span class="doccomment">/// Very generic implementation. (N % 2 == 0) vertices, ditto for texture coords, and rgba color</span>
<span class="doccomment">/// Provides Image and Texture handles for drawing</span>
<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">Drawable</span> {
<span class="kw">fn</span> <span class="ident">get_vertices</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Vec</span><span class="op">&lt;</span>(<span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>)<span class="op">&gt;</span>;
<span class="kw">fn</span> <span class="ident">get_color</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> (<span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>);
<span class="kw">fn</span> <span class="ident">get_ti_coords</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Vec</span><span class="op">&lt;</span>(<span class="ident">f32</span>, <span class="ident">f32</span>)<span class="op">&gt;</span>;
<span class="kw">fn</span> <span class="ident">get_texture_handle</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasTextureHandle</span><span class="op">&gt;</span><span class="op">&gt;</span>;
<span class="kw">fn</span> <span class="ident">get_image_handle</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasImageHandle</span><span class="op">&gt;</span><span class="op">&gt;</span>;
<span class="comment">// fn get_text_handle(&amp;self) -&gt; Option&lt;Arc&lt;CanvasTextHandle&gt;&gt;;</span>
<span class="kw">fn</span> <span class="ident">collect</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">RuntimeVertexDef</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">color</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">get_color</span>();
<span class="comment">// self.get_vertices().iter().zip(self.get_ti_coords().iter()).map(|(a, b)|</span>
<span class="comment">// Vertex3D {</span>
<span class="comment">// v_position: [a.0, a.1, a.2],</span>
<span class="comment">// color: [color.0, color.1, color.2, color.3],</span>
<span class="comment">// ti_position: [b.0, b.1],</span>
<span class="comment">// }).collect()</span>
<span class="comment">// TODO</span>
<span class="macro">vec</span><span class="macro">!</span>[<span class="ident">RuntimeVertexDef</span>::<span class="ident">from_primitive</span>(<span class="number">0</span>)]
}
}
<span class="doccomment">/// Canvas state is used for storage of texture and image buffers in addition to vertex buffers</span>
<span class="doccomment">/// Canvas state also contains logic for writing the stored buffers to the command_buffer</span>
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>)]</span>
@@ -742,16 +640,6 @@
<span class="comment">// Compiled Graphics pipelines have a handle which self describe their position in this vector</span>
<span class="ident">shader_buffers</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">Box</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">CompiledGraphicsPipeline</span><span class="op">&gt;</span><span class="op">&gt;</span><span class="op">&gt;</span>,
<span class="comment">// Hold onto the vertices we get from the Compu and Canvas Frames</span>
<span class="comment">// When the run comes around, push the vertices to the GPU</span>
<span class="ident">colored_vertex_buffer</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span>(<span class="kw">dyn</span> <span class="ident">BufferAccess</span> <span class="op">+</span> <span class="ident">Send</span> <span class="op">+</span> <span class="ident">Sync</span>)<span class="op">&gt;</span><span class="op">&gt;</span>,
<span class="ident">textured_vertex_buffer</span>: <span class="ident">HashMap</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasTextureHandle</span><span class="op">&gt;</span>, <span class="ident">Arc</span><span class="op">&lt;</span>(<span class="kw">dyn</span> <span class="ident">BufferAccess</span> <span class="op">+</span> <span class="ident">Send</span> <span class="op">+</span> <span class="ident">Sync</span>)<span class="op">&gt;</span><span class="op">&gt;</span>,
<span class="ident">image_vertex_buffer</span>: <span class="ident">HashMap</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasImageHandle</span><span class="op">&gt;</span>, <span class="ident">Arc</span><span class="op">&lt;</span>(<span class="kw">dyn</span> <span class="ident">BufferAccess</span> <span class="op">+</span> <span class="ident">Send</span> <span class="op">+</span> <span class="ident">Sync</span>)<span class="op">&gt;</span><span class="op">&gt;</span>,
<span class="ident">text_instances</span>: <span class="ident">HashMap</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasFontHandle</span><span class="op">&gt;</span>, <span class="ident">Arc</span><span class="op">&lt;</span>(<span class="kw">dyn</span> <span class="ident">BufferAccess</span> <span class="op">+</span> <span class="ident">Send</span> <span class="op">+</span> <span class="ident">Sync</span>)<span class="op">&gt;</span><span class="op">&gt;</span>,
<span class="comment">// Looks like we gotta hold onto the queue for managing textures</span>
<span class="ident">queue</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">Queue</span><span class="op">&gt;</span>,
<span class="ident">device</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">Device</span><span class="op">&gt;</span>,
@@ -859,11 +747,6 @@
<span class="ident">shader_buffers</span>: <span class="macro">vec</span><span class="macro">!</span>[],
<span class="ident">font_buffers</span>: <span class="macro">vec</span><span class="macro">!</span>[],
<span class="ident">colored_vertex_buffer</span>: <span class="macro">vec</span><span class="macro">!</span>[],
<span class="ident">textured_vertex_buffer</span>: <span class="ident">Default</span>::<span class="ident">default</span>(),
<span class="ident">image_vertex_buffer</span>: <span class="ident">Default</span>::<span class="ident">default</span>(),
<span class="ident">text_instances</span>: <span class="ident">HashMap</span>::<span class="ident">default</span>(),
<span class="ident">queue</span>: <span class="ident">queue</span>.<span class="ident">clone</span>(),
<span class="ident">device</span>: <span class="ident">device</span>.<span class="ident">clone</span>(),
<span class="ident">render_pass</span>: <span class="ident">render_pass</span>.<span class="ident">clone</span>(),
@@ -962,10 +845,9 @@
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">load_shader</span><span class="op">&lt;</span><span class="ident">T</span>: <span class="lifetime">&#39;static</span><span class="op">&gt;</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>,
<span class="ident">filename</span>: <span class="ident">String</span>,
<span class="ident">physical</span>: <span class="ident">PhysicalDevice</span>,
<span class="ident">capabilities</span>: <span class="ident">Capabilities</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledGraphicsPipelineHandle</span><span class="op">&gt;</span><span class="op">&gt;</span>
<span class="ident">capabilities</span>: <span class="ident">Capabilities</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledShaderHandle</span><span class="op">&gt;</span><span class="op">&gt;</span>
<span class="kw">where</span> <span class="ident">T</span>: <span class="ident">CompiledGraphicsPipeline</span> {
<span class="kw">let</span> <span class="ident">handle</span> <span class="op">=</span> <span class="ident">Arc</span>::<span class="ident">new</span>(<span class="ident">CompiledGraphicsPipelineHandle</span> {
<span class="kw">let</span> <span class="ident">handle</span> <span class="op">=</span> <span class="ident">Arc</span>::<span class="ident">new</span>(<span class="ident">CompiledShaderHandle</span> {
<span class="ident">handle</span>: <span class="self">self</span>.<span class="ident">shader_buffers</span>.<span class="ident">len</span>() <span class="kw">as</span> <span class="ident">u32</span>
});
@@ -998,15 +880,29 @@
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">accumulator</span> <span class="op">=</span> <span class="ident">Vec</span>::<span class="ident">new</span>();
<span class="kw">for</span> <span class="ident">i</span> <span class="kw">in</span> (<span class="number">0</span>..<span class="number">255</span>) {
<span class="kw">let</span> <span class="ident">glyph</span> <span class="op">=</span> <span class="ident">font</span>.<span class="ident">glyph</span>(<span class="ident">GlyphId</span> { <span class="number">0</span>: <span class="number">40</span> });
<span class="kw">let</span> <span class="ident">glyph</span> <span class="op">=</span> <span class="ident">font</span>.<span class="ident">glyph</span>(<span class="string">&#39;d&#39;</span>);
<span class="kw">let</span> <span class="ident">glyph_data</span> <span class="op">=</span> <span class="ident">glyph</span>.<span class="ident">get_data</span>().<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">s</span> <span class="op">=</span> <span class="ident">glyph</span>.<span class="ident">scaled</span>(<span class="ident">Scale</span> { <span class="ident">x</span>: <span class="number">1.0</span>, <span class="ident">y</span>: <span class="number">1.0</span> });
<span class="kw">for</span> <span class="ident">vertex</span> <span class="kw">in</span> <span class="ident">glyph_data</span>.<span class="ident">clone</span>().<span class="ident">shape</span>.<span class="ident">clone</span>().<span class="ident">unwrap</span>() {
<span class="ident">accumulator</span>.<span class="ident">push</span>(<span class="ident">TextVertex3D</span> {
<span class="ident">position</span>: [<span class="ident">vertex</span>.<span class="ident">x</span> <span class="kw">as</span> <span class="ident">f32</span>, <span class="ident">vertex</span>.<span class="ident">y</span> <span class="kw">as</span> <span class="ident">f32</span>, <span class="number">0.0</span>],
});
<span class="kw">let</span> <span class="ident">shape</span> <span class="op">=</span> <span class="ident">s</span>.<span class="ident">shape</span>().<span class="ident">unwrap</span>();
<span class="kw">for</span> <span class="ident">contour</span> <span class="kw">in</span> <span class="ident">shape</span> {
<span class="kw">for</span> <span class="ident">segment</span> <span class="kw">in</span> <span class="ident">contour</span>.<span class="ident">segments</span> {
<span class="kw">match</span> <span class="ident">segment</span> {
<span class="ident">Segment</span>::<span class="ident">Line</span>(<span class="ident">l</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="ident">accumulator</span>.<span class="ident">push</span>(<span class="ident">TextVertex3D</span> {
<span class="ident">position</span>: [<span class="ident">l</span>.<span class="ident">p</span>[<span class="number">0</span>].<span class="ident">x</span> <span class="kw">as</span> <span class="ident">f32</span>, <span class="ident">l</span>.<span class="ident">p</span>[<span class="number">0</span>].<span class="ident">y</span> <span class="kw">as</span> <span class="ident">f32</span>, <span class="number">0.0</span>],
});
}
<span class="ident">Segment</span>::<span class="ident">Curve</span>(<span class="ident">c</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="ident">accumulator</span>.<span class="ident">push</span>(<span class="ident">TextVertex3D</span> {
<span class="ident">position</span>: [<span class="ident">c</span>.<span class="ident">p</span>[<span class="number">0</span>].<span class="ident">x</span> <span class="kw">as</span> <span class="ident">f32</span>, <span class="ident">c</span>.<span class="ident">p</span>[<span class="number">0</span>].<span class="ident">y</span> <span class="kw">as</span> <span class="ident">f32</span>, <span class="number">0.0</span>],
});
}
}
}
}
}
@@ -1036,7 +932,7 @@
<span class="doccomment">/// Using the shader name, iterates through the stored shaders and matches by the name</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_shader_handle</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">shader_name</span>: <span class="ident">String</span>)
<span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledGraphicsPipelineHandle</span><span class="op">&gt;</span><span class="op">&gt;</span> {
<span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledShaderHandle</span><span class="op">&gt;</span><span class="op">&gt;</span> {
<span class="kw">for</span> <span class="ident">shader</span> <span class="kw">in</span> <span class="self">self</span>.<span class="ident">shader_buffers</span>.<span class="ident">clone</span>() {
<span class="kw">if</span> <span class="ident">shader</span>.<span class="ident">get_name</span>() <span class="op">=</span><span class="op">=</span> <span class="ident">shader_name</span> {
<span class="kw">return</span> <span class="prelude-val">Some</span>(<span class="ident">shader</span>.<span class="ident">get_handle</span>().<span class="ident">clone</span>());
@@ -1067,91 +963,6 @@
}
}
<span class="doccomment">/// Scrape all the values from the CanvasFrame and then allocate the vertex buffers</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">draw</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">canvas_frame</span>: <span class="ident">CanvasFrame</span>) {
<span class="comment">// Consume the canvas frame</span>
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">textured_drawables</span> <span class="op">=</span> <span class="ident">canvas_frame</span>.<span class="ident">textured_drawables</span>;
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">colored_drawables</span> <span class="op">=</span> <span class="ident">canvas_frame</span>.<span class="ident">colored_drawables</span>;
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">image_drawables</span> <span class="op">=</span> <span class="ident">canvas_frame</span>.<span class="ident">image_drawables</span>;
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">text_drawables</span> <span class="op">=</span> <span class="ident">canvas_frame</span>.<span class="ident">text_drawables</span>;
<span class="comment">// Walk through the consumed items and allocate them to GPU buffers</span>
<span class="self">self</span>.<span class="ident">colored_vertex_buffer</span>.<span class="ident">clear</span>();
{
<span class="kw">let</span> <span class="ident">g</span> <span class="op">=</span> <span class="ident">hprof</span>::<span class="ident">enter</span>(<span class="string">&quot;Colored Vertex Buffer&quot;</span>);
<span class="self">self</span>.<span class="ident">colored_vertex_buffer</span>.<span class="ident">push</span>(
<span class="ident">ImmutableBuffer</span>::<span class="ident">from_iter</span>(
<span class="ident">colored_drawables</span>.<span class="ident">iter</span>().<span class="ident">cloned</span>(),
<span class="ident">BufferUsage</span>::<span class="ident">vertex_buffer</span>(),
<span class="self">self</span>.<span class="ident">queue</span>.<span class="ident">clone</span>(),
).<span class="ident">unwrap</span>().<span class="number">0</span>
);
}
<span class="self">self</span>.<span class="ident">textured_vertex_buffer</span>.<span class="ident">clear</span>();
{
<span class="kw">let</span> <span class="ident">g</span> <span class="op">=</span> <span class="ident">hprof</span>::<span class="ident">enter</span>(<span class="string">&quot;Textured Vertex Buffer&quot;</span>);
<span class="kw">for</span> (<span class="ident">k</span>, <span class="ident">v</span>) <span class="kw">in</span> <span class="ident">textured_drawables</span>.<span class="ident">drain</span>() {
<span class="kw">let</span> <span class="ident">vertex_buffer</span> <span class="op">=</span> <span class="ident">v</span>.<span class="ident">clone</span>().<span class="ident">get</span>(<span class="number">0</span>).<span class="ident">unwrap</span>().<span class="ident">clone</span>();
<span class="comment">// TODO</span>
<span class="comment">// v.clone().iter()</span>
<span class="comment">// .fold(Vec::new(), |mut a: Vec&lt;RuntimeVertexDef&gt;, b| {</span>
<span class="comment">// a.extend(b);</span>
<span class="comment">// a</span>
<span class="comment">// });</span>
<span class="self">self</span>.<span class="ident">textured_vertex_buffer</span>.<span class="ident">insert</span>(
<span class="ident">k</span>.<span class="ident">clone</span>(),
<span class="ident">ImmutableBuffer</span>::<span class="ident">from_iter</span>(
<span class="ident">vertex_buffer</span>.<span class="ident">iter</span>().<span class="ident">cloned</span>(),
<span class="ident">BufferUsage</span>::<span class="ident">vertex_buffer</span>(),
<span class="self">self</span>.<span class="ident">queue</span>.<span class="ident">clone</span>(),
).<span class="ident">unwrap</span>().<span class="number">0</span>,
);
}
}
<span class="self">self</span>.<span class="ident">image_vertex_buffer</span>.<span class="ident">clear</span>();
{
<span class="kw">let</span> <span class="ident">g</span> <span class="op">=</span> <span class="ident">hprof</span>::<span class="ident">enter</span>(<span class="string">&quot;Image Vertex Buffer&quot;</span>);
<span class="kw">for</span> (<span class="ident">k</span>, <span class="ident">v</span>) <span class="kw">in</span> <span class="ident">image_drawables</span>.<span class="ident">drain</span>() {
<span class="kw">let</span> <span class="ident">vertex_buffer</span> <span class="op">=</span> <span class="ident">v</span>.<span class="ident">clone</span>().<span class="ident">get</span>(<span class="number">0</span>).<span class="ident">unwrap</span>().<span class="ident">clone</span>();
<span class="comment">// TODO</span>
<span class="comment">// v.clone().iter()</span>
<span class="comment">// .fold(Vec::new(), |mut a: Vec&lt;&amp;RuntimeVertexDef&gt;, b| {</span>
<span class="comment">// a.extend(b);</span>
<span class="comment">// a</span>
<span class="comment">// });</span>
<span class="self">self</span>.<span class="ident">image_vertex_buffer</span>.<span class="ident">insert</span>(
<span class="ident">k</span>.<span class="ident">clone</span>(),
<span class="ident">ImmutableBuffer</span>::<span class="ident">from_iter</span>(
<span class="ident">vertex_buffer</span>.<span class="ident">iter</span>().<span class="ident">cloned</span>(),
<span class="ident">BufferUsage</span>::<span class="ident">vertex_buffer</span>(),
<span class="self">self</span>.<span class="ident">queue</span>.<span class="ident">clone</span>(),
).<span class="ident">unwrap</span>().<span class="number">0</span>,
);
}
}
<span class="self">self</span>.<span class="ident">text_instances</span>.<span class="ident">clear</span>();
{
<span class="kw">let</span> <span class="ident">g</span> <span class="op">=</span> <span class="ident">hprof</span>::<span class="ident">enter</span>(<span class="string">&quot;Text Instance Vertex Buffer&quot;</span>);
<span class="kw">for</span> (<span class="ident">k</span>, <span class="ident">v</span>) <span class="kw">in</span> <span class="ident">text_drawables</span>.<span class="ident">drain</span>() {
<span class="self">self</span>.<span class="ident">text_instances</span>.<span class="ident">insert</span>(
<span class="ident">k</span>.<span class="ident">clone</span>(),
<span class="ident">ImmutableBuffer</span>::<span class="ident">from_iter</span>(
<span class="ident">v</span>.<span class="ident">iter</span>().<span class="ident">cloned</span>(),
<span class="ident">BufferUsage</span>::<span class="ident">all</span>(),
<span class="self">self</span>.<span class="ident">queue</span>.<span class="ident">clone</span>(),
).<span class="ident">unwrap</span>().<span class="number">0</span>,
);
}
}
}
<span class="doccomment">/// Builds the descriptor set for solid colors using the input kernel (needs to support solid colors)</span>
<span class="kw">fn</span> <span class="ident">get_solid_color_descriptor_set</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">kernel</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">GenericShader</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Box</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">DescriptorSet</span> <span class="op">+</span> <span class="ident">Send</span> <span class="op">+</span> <span class="ident">Sync</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">o</span>: <span class="ident">Box</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">DescriptorSet</span> <span class="op">+</span> <span class="ident">Send</span> <span class="op">+</span> <span class="ident">Sync</span><span class="op">&gt;</span> <span class="op">=</span> <span class="ident">Box</span>::<span class="ident">new</span>(
@@ -1161,12 +972,67 @@
<span class="ident">o</span>
}
<span class="doccomment">/// Consume and allocated the canvas frame data to the GPU</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">allocate</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">canvas_frame</span>: <span class="ident">CanvasFrameTest</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">CanvasFrameAllocation</span> {
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">colored_vertex_buffer</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">ColorVertex2D</span><span class="op">&gt;</span> <span class="op">=</span> <span class="ident">Vec</span>::<span class="ident">default</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">textured_vertex_buffer</span>: <span class="ident">HashMap</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasTextureHandle</span><span class="op">&gt;</span>, <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">TextureVertex2D</span><span class="op">&gt;</span><span class="op">&gt;</span> <span class="op">=</span> <span class="ident">HashMap</span>::<span class="ident">new</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">image_vertex_buffer</span>: <span class="ident">HashMap</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasImageHandle</span><span class="op">&gt;</span>, <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">ImageVertex2D</span><span class="op">&gt;</span><span class="op">&gt;</span> <span class="op">=</span> <span class="ident">HashMap</span>::<span class="ident">new</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">text_instances</span>: <span class="ident">HashMap</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasFontHandle</span><span class="op">&gt;</span>, <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">TextVertex3D</span><span class="op">&gt;</span><span class="op">&gt;</span> <span class="op">=</span> <span class="ident">HashMap</span>::<span class="ident">new</span>();
<span class="kw">for</span> <span class="ident">value</span> <span class="kw">in</span> <span class="ident">canvas_frame</span>.<span class="ident">map</span> {
<span class="kw">match</span> <span class="ident">value</span> {
<span class="ident">VertexTypes</span>::<span class="ident">TextureType</span>(<span class="ident">vertices</span>, <span class="ident">handle</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="ident">textured_vertex_buffer</span>.<span class="ident">entry</span>(<span class="ident">handle</span>).<span class="ident">or_insert</span>(<span class="ident">vertices</span>.<span class="ident">clone</span>()).<span class="ident">extend</span>(<span class="ident">vertices</span>);
}
<span class="ident">VertexTypes</span>::<span class="ident">ImageType</span>(<span class="ident">vertices</span>, <span class="ident">handle</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="ident">image_vertex_buffer</span>.<span class="ident">entry</span>(<span class="ident">handle</span>).<span class="ident">or_insert</span>(<span class="ident">vertices</span>.<span class="ident">clone</span>()).<span class="ident">extend</span>(<span class="ident">vertices</span>);
}
<span class="ident">VertexTypes</span>::<span class="ident">ColorType</span>(<span class="ident">vertices</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="ident">colored_vertex_buffer</span>.<span class="ident">extend</span>(<span class="ident">vertices</span>);
}
<span class="ident">VertexTypes</span>::<span class="ident">ThreeDType</span>(<span class="ident">vertices</span>) <span class="op">=</span><span class="op">&gt;</span> {}
};
};
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">allocated_colored_buffer</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span>(<span class="kw">dyn</span> <span class="ident">BufferAccess</span> <span class="op">+</span> <span class="ident">Send</span> <span class="op">+</span> <span class="ident">Sync</span>)<span class="op">&gt;</span><span class="op">&gt;</span> <span class="op">=</span> <span class="ident">Vec</span>::<span class="ident">new</span>();
<span class="kw">if</span> <span class="op">!</span><span class="ident">colored_vertex_buffer</span>.<span class="ident">is_empty</span>() {
<span class="ident">allocated_colored_buffer</span>.<span class="ident">push</span>(<span class="ident">ImmutableBuffer</span>::<span class="ident">from_iter</span>(
<span class="ident">colored_vertex_buffer</span>.<span class="ident">iter</span>().<span class="ident">cloned</span>(),
<span class="ident">BufferUsage</span>::<span class="ident">vertex_buffer</span>(),
<span class="self">self</span>.<span class="ident">queue</span>.<span class="ident">clone</span>(),
).<span class="ident">unwrap</span>().<span class="number">0</span>);
}
<span class="ident">CanvasFrameAllocation</span> {
<span class="ident">colored_vertex_buffer</span>: <span class="ident">allocated_colored_buffer</span>,
<span class="ident">textured_vertex_buffer</span>: <span class="ident">textured_vertex_buffer</span>.<span class="ident">into_iter</span>().<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">k</span>, <span class="ident">v</span>)<span class="op">|</span> {
(<span class="ident">k</span>,
<span class="ident">ImmutableBuffer</span>::<span class="ident">from_iter</span>(
<span class="ident">v</span>.<span class="ident">iter</span>().<span class="ident">cloned</span>(),
<span class="ident">BufferUsage</span>::<span class="ident">vertex_buffer</span>(),
<span class="self">self</span>.<span class="ident">queue</span>.<span class="ident">clone</span>(),
).<span class="ident">unwrap</span>().<span class="number">0</span> <span class="kw">as</span> <span class="ident">Arc</span><span class="op">&lt;</span>(<span class="kw">dyn</span> <span class="ident">BufferAccess</span> <span class="op">+</span> <span class="ident">Send</span> <span class="op">+</span> <span class="ident">Sync</span>)<span class="op">&gt;</span>)
}).<span class="ident">collect</span>(),
<span class="ident">image_vertex_buffer</span>: <span class="ident">image_vertex_buffer</span>.<span class="ident">into_iter</span>().<span class="ident">map</span>(<span class="op">|</span>(<span class="ident">k</span>, <span class="ident">v</span>)<span class="op">|</span> {
(<span class="ident">k</span>,
<span class="ident">ImmutableBuffer</span>::<span class="ident">from_iter</span>(
<span class="ident">v</span>.<span class="ident">iter</span>().<span class="ident">cloned</span>(),
<span class="ident">BufferUsage</span>::<span class="ident">vertex_buffer</span>(),
<span class="self">self</span>.<span class="ident">queue</span>.<span class="ident">clone</span>(),
).<span class="ident">unwrap</span>().<span class="number">0</span> <span class="kw">as</span> <span class="ident">Arc</span><span class="op">&lt;</span>(<span class="kw">dyn</span> <span class="ident">BufferAccess</span> <span class="op">+</span> <span class="ident">Send</span> <span class="op">+</span> <span class="ident">Sync</span>)<span class="op">&gt;</span>)
}).<span class="ident">collect</span>(),
<span class="ident">text_instances</span>: <span class="ident">Default</span>::<span class="ident">default</span>(),
}
}
<span class="doccomment">/// Pushes the draw commands to the command buffer. Requires the framebuffers and</span>
<span class="doccomment">/// image number to be passed in as they are taken care of by the vkprocessor</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">draw_commands</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>,
<span class="kw-2">mut</span> <span class="ident">command_buffer</span>: <span class="ident">AutoCommandBufferBuilder</span>,
<span class="ident">framebuffers</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">FramebufferAbstract</span> <span class="op">+</span> <span class="ident">Send</span> <span class="op">+</span> <span class="ident">Sync</span><span class="op">&gt;</span><span class="op">&gt;</span>,
<span class="ident">image_num</span>: <span class="ident">usize</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">AutoCommandBufferBuilder</span> {
<span class="ident">image_num</span>: <span class="ident">usize</span>,
<span class="ident">allocated_buffers</span>: <span class="ident">CanvasFrameAllocation</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">AutoCommandBufferBuilder</span> {
<span class="comment">// Specify the color to clear the framebuffer with i.e. blue</span>
<span class="kw">let</span> <span class="ident">clear_values</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>(
@@ -1196,11 +1062,11 @@
<span class="comment">// This looks a little weird as colored_vertex_buffer is a vec of GPU allocated vecs.</span>
<span class="comment">// But we can pass in multiple vertex buffers</span>
<span class="kw">if</span> <span class="op">!</span><span class="self">self</span>.<span class="ident">colored_vertex_buffer</span>.<span class="ident">is_empty</span>() {
<span class="kw">if</span> <span class="ident">allocated_buffers</span>.<span class="ident">colored_vertex_buffer</span>.<span class="ident">is_empty</span>() {
<span class="ident">command_buffer</span> <span class="op">=</span> <span class="ident">command_buffer</span>.<span class="ident">draw</span>(
<span class="ident">shader</span>.<span class="ident">get_pipeline</span>().<span class="ident">clone</span>(),
<span class="kw-2">&amp;</span><span class="self">self</span>.<span class="ident">dynamic_state</span>.<span class="ident">clone</span>(),
<span class="self">self</span>.<span class="ident">colored_vertex_buffer</span>.<span class="ident">clone</span>(),
<span class="ident">allocated_buffers</span>.<span class="ident">colored_vertex_buffer</span>.<span class="ident">clone</span>(),
(), (),
).<span class="ident">unwrap</span>();
}
@@ -1211,8 +1077,8 @@
.<span class="ident">unwrap</span>().<span class="ident">clone</span>().<span class="ident">get_handle</span>() <span class="kw">as</span> <span class="ident">usize</span>
).<span class="ident">unwrap</span>();
<span class="kw">if</span> <span class="op">!</span><span class="self">self</span>.<span class="ident">image_vertex_buffer</span>.<span class="ident">is_empty</span>() {
<span class="kw">for</span> (<span class="ident">image_handle</span>, <span class="ident">vertex_buffer</span>) <span class="kw">in</span> <span class="self">self</span>.<span class="ident">image_vertex_buffer</span>.<span class="ident">clone</span>() {
<span class="kw">if</span> <span class="op">!</span><span class="ident">allocated_buffers</span>.<span class="ident">image_vertex_buffer</span>.<span class="ident">is_empty</span>() {
<span class="kw">for</span> (<span class="ident">image_handle</span>, <span class="ident">vertex_buffer</span>) <span class="kw">in</span> <span class="ident">allocated_buffers</span>.<span class="ident">image_vertex_buffer</span>.<span class="ident">clone</span>() {
<span class="kw">let</span> <span class="ident">handle</span> <span class="op">=</span> <span class="ident">image_handle</span>.<span class="ident">clone</span>().<span class="ident">get_handle</span>() <span class="kw">as</span> <span class="ident">usize</span>;
<span class="kw">let</span> <span class="ident">descriptor_set</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">image_buffers</span>.<span class="ident">get</span>(<span class="ident">handle</span>).<span class="ident">clone</span>().<span class="ident">unwrap</span>().<span class="ident">clone</span>()
.<span class="ident">get_descriptor_set</span>(<span class="ident">shader</span>.<span class="ident">get_pipeline</span>().<span class="ident">clone</span>());
@@ -1232,8 +1098,8 @@
.<span class="ident">unwrap</span>().<span class="ident">clone</span>().<span class="ident">get_handle</span>() <span class="kw">as</span> <span class="ident">usize</span>
).<span class="ident">unwrap</span>();
<span class="kw">if</span> <span class="op">!</span><span class="self">self</span>.<span class="ident">textured_vertex_buffer</span>.<span class="ident">is_empty</span>() {
<span class="kw">for</span> (<span class="ident">texture_handle</span>, <span class="ident">vertex_buffer</span>) <span class="kw">in</span> <span class="self">self</span>.<span class="ident">textured_vertex_buffer</span>.<span class="ident">clone</span>() {
<span class="kw">if</span> <span class="op">!</span><span class="ident">allocated_buffers</span>.<span class="ident">textured_vertex_buffer</span>.<span class="ident">is_empty</span>() {
<span class="kw">for</span> (<span class="ident">texture_handle</span>, <span class="ident">vertex_buffer</span>) <span class="kw">in</span> <span class="ident">allocated_buffers</span>.<span class="ident">textured_vertex_buffer</span>.<span class="ident">clone</span>() {
<span class="kw">let</span> <span class="ident">handle</span> <span class="op">=</span> <span class="ident">texture_handle</span>.<span class="ident">clone</span>().<span class="ident">get_handle</span>() <span class="kw">as</span> <span class="ident">usize</span>;
<span class="kw">let</span> <span class="ident">descriptor_set</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">texture_buffers</span>.<span class="ident">get</span>(<span class="ident">handle</span>).<span class="ident">clone</span>().<span class="ident">unwrap</span>().<span class="ident">clone</span>()
.<span class="ident">get_descriptor_set</span>(<span class="ident">shader</span>.<span class="ident">get_pipeline</span>(), <span class="self">self</span>.<span class="ident">sampler</span>.<span class="ident">clone</span>());

View File

@@ -71,7 +71,6 @@
<span id="71">71</span>
<span id="72">72</span>
<span id="73">73</span>
<span id="74">74</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">descriptor</span>::<span class="ident">descriptor_set</span>::<span class="ident">PersistentDescriptorSet</span>;
<span class="kw">use</span> <span class="ident">rusttype</span>::{<span class="ident">Font</span>, <span class="ident">PositionedGlyph</span>, <span class="ident">Scale</span>, <span class="ident">Rect</span>, <span class="ident">point</span>, <span class="ident">GlyphId</span>};
@@ -85,7 +84,6 @@
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">format</span>::<span class="ident">Format</span>::<span class="ident">R8Unorm</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">fs</span>::<span class="ident">File</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">io</span>::<span class="ident">Read</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">util</span>::<span class="ident">vertex_3d</span>::{<span class="ident">Vertex3D</span>, <span class="ident">TextVertex3D</span>};
<span class="comment">//pub struct Glyph {}</span>

View File

@@ -61,15 +61,21 @@
<span id="61">61</span>
<span id="62">62</span>
<span id="63">63</span>
<span id="64">64</span>
<span id="65">65</span>
<span id="66">66</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">Handle</span> {
<span class="kw">fn</span> <span class="ident">get_handle</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">u32</span>;
}
<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">DrawableHandle</span> {
<span class="ident">Texture</span>(<span class="ident">CanvasTextureHandle</span>),
<span class="ident">Image</span>(<span class="ident">CanvasImageHandle</span>),
<span class="ident">Font</span>(<span class="ident">CanvasFontHandle</span>),
}
<span class="doccomment">/// Typed wrapper for a u32 handle</span>
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>, <span class="ident">Debug</span>, <span class="ident">Default</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>, <span class="ident">Hash</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">CanvasFontHandle</span> {
@@ -85,7 +91,7 @@
<span class="doccomment">/// Typed wrapper for a u32 handle</span>
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>, <span class="ident">Debug</span>, <span class="ident">Default</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>, <span class="ident">Hash</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">CanvasTextureHandle</span> {
<span class="kw">pub</span>(<span class="kw">in</span> <span class="kw">crate</span>::<span class="ident">canvas</span>) <span class="ident">handle</span>: <span class="ident">u32</span>
<span class="kw">pub</span><span class="comment">/*(in crate::canvas)*/</span> <span class="ident">handle</span>: <span class="ident">u32</span>
}
<span class="kw">impl</span> <span class="ident">Handle</span> <span class="kw">for</span> <span class="ident">CanvasTextureHandle</span> {
@@ -108,23 +114,11 @@
<span class="doccomment">/// Typed wrapper for a u32 handle</span>
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>, <span class="ident">Debug</span>, <span class="ident">Default</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>, <span class="ident">Hash</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">CanvasShaderHandle</span> {
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">CompiledShaderHandle</span> {
<span class="kw">pub</span>(<span class="kw">in</span> <span class="kw">crate</span>::<span class="ident">canvas</span>) <span class="ident">handle</span>: <span class="ident">u32</span>
}
<span class="kw">impl</span> <span class="ident">Handle</span> <span class="kw">for</span> <span class="ident">CanvasShaderHandle</span> {
<span class="kw">fn</span> <span class="ident">get_handle</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">u32</span> {
<span class="self">self</span>.<span class="ident">handle</span>
}
}
<span class="doccomment">/// Typed wrapper for a u32 handle</span>
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>, <span class="ident">Debug</span>, <span class="ident">Default</span>, <span class="ident">PartialEq</span>, <span class="ident">Eq</span>, <span class="ident">Hash</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">CompiledGraphicsPipelineHandle</span> {
<span class="kw">pub</span>(<span class="kw">in</span> <span class="kw">crate</span>::<span class="ident">canvas</span>) <span class="ident">handle</span>: <span class="ident">u32</span>
}
<span class="kw">impl</span> <span class="ident">Handle</span> <span class="kw">for</span> <span class="ident">CompiledGraphicsPipelineHandle</span> {
<span class="kw">impl</span> <span class="ident">Handle</span> <span class="kw">for</span> <span class="ident">CompiledShaderHandle</span> {
<span class="kw">fn</span> <span class="ident">get_handle</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">u32</span> {
<span class="self">self</span>.<span class="ident">handle</span>
}

View File

@@ -141,7 +141,6 @@
<span id="141">141</span>
<span id="142">142</span>
<span id="143">143</span>
<span id="144">144</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">pipeline</span>::<span class="ident">GraphicsPipelineAbstract</span>;
@@ -156,12 +155,11 @@
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">marker</span>::<span class="ident">PhantomData</span>;
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">pipeline</span>::<span class="ident">depth_stencil</span>::{<span class="ident">DepthStencil</span>, <span class="ident">Compare</span>, <span class="ident">DepthBounds</span>, <span class="ident">Stencil</span>, <span class="ident">StencilOp</span>};
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">pipeline</span>::<span class="ident">vertex</span>::{<span class="ident">SingleBufferDefinition</span>, <span class="ident">VertexDefinition</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">util</span>::<span class="ident">vertex_3d</span>::<span class="ident">Vertex3D</span>;
<span class="kw">use</span> <span class="ident">shade_runner</span> <span class="kw">as</span> <span class="ident">sr</span>;
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">memory</span>::<span class="ident">pool</span>::<span class="ident">PotentialDedicatedAllocation</span>::<span class="ident">Generic</span>;
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">SafeDeref</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">shader</span>::<span class="ident">shader_common</span>::{<span class="ident">ShaderType</span>, <span class="ident">CompiledGraphicsPipelineResources</span>, <span class="ident">CompiledGraphicsPipeline</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">handles</span>::<span class="ident">CompiledGraphicsPipelineHandle</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">handles</span>::<span class="ident">CompiledShaderHandle</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">shader</span>::<span class="ident">dynamic_vertex</span>::<span class="ident">RuntimeVertexDef</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">ShaderSpecializationConstants</span>;
@@ -170,7 +168,7 @@
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">GenericShader</span> {
<span class="ident">graphics_pipeline</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">GraphicsPipelineAbstract</span> <span class="op">+</span> <span class="ident">Sync</span> <span class="op">+</span> <span class="ident">Send</span><span class="op">&gt;</span><span class="op">&gt;</span>,
<span class="ident">handle</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledGraphicsPipelineHandle</span><span class="op">&gt;</span>,
<span class="ident">handle</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledShaderHandle</span><span class="op">&gt;</span>,
<span class="ident">name</span>: <span class="ident">String</span>,
<span class="ident">device</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">Device</span><span class="op">&gt;</span>,
@@ -188,9 +186,9 @@
<span class="doccomment">/// This will explode when the shader does not want to compile</span>
<span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">filename</span>: <span class="ident">String</span>,
<span class="ident">device</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">Device</span><span class="op">&gt;</span>,
<span class="ident">handle</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledGraphicsPipelineHandle</span><span class="op">&gt;</span>,
<span class="ident">render_pass</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">RenderPassAbstract</span> <span class="op">+</span> <span class="ident">Send</span> <span class="op">+</span> <span class="ident">Sync</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">GenericShader</span> {
<span class="ident">device</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">Device</span><span class="op">&gt;</span>,
<span class="ident">handle</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledShaderHandle</span><span class="op">&gt;</span>,
<span class="ident">render_pass</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">RenderPassAbstract</span> <span class="op">+</span> <span class="ident">Send</span> <span class="op">+</span> <span class="ident">Sync</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">GenericShader</span> {
<span class="kw">let</span> <span class="ident">compiled_vertex</span> <span class="op">=</span> <span class="ident">GenericShader</span>::<span class="ident">compile</span>(
<span class="ident">GenericShader</span>::<span class="ident">get_path</span>(<span class="ident">filename</span>.<span class="ident">clone</span>(), <span class="ident">ShaderType</span>::<span class="ident">VERTEX</span>),
@@ -267,7 +265,7 @@
<span class="self">self</span>.<span class="ident">name</span>.<span class="ident">clone</span>()
}
<span class="kw">fn</span> <span class="ident">get_handle</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledGraphicsPipelineHandle</span><span class="op">&gt;</span> {
<span class="kw">fn</span> <span class="ident">get_handle</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledShaderHandle</span><span class="op">&gt;</span> {
<span class="self">self</span>.<span class="ident">handle</span>.<span class="ident">clone</span>()
}

View File

@@ -132,7 +132,7 @@
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">device</span>::<span class="ident">Device</span>;
<span class="kw">use</span> <span class="ident">shade_runner</span>::<span class="ident">Entry</span>;
<span class="kw">use</span> <span class="ident">shaderc</span>::<span class="ident">ShaderKind</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">handles</span>::<span class="ident">CompiledGraphicsPipelineHandle</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">handles</span>::<span class="ident">CompiledShaderHandle</span>;
<span class="comment">/*
@@ -226,10 +226,10 @@ This best works I think if I allow users to
<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">CompiledGraphicsPipeline</span> {
<span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">filename</span>: <span class="ident">String</span>,
<span class="ident">device</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">Device</span><span class="op">&gt;</span>,
<span class="ident">handle</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledGraphicsPipelineHandle</span><span class="op">&gt;</span>,
<span class="ident">handle</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledShaderHandle</span><span class="op">&gt;</span>,
<span class="ident">render_pass</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">RenderPassAbstract</span> <span class="op">+</span> <span class="ident">Send</span> <span class="op">+</span> <span class="ident">Sync</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> <span class="kw">where</span> <span class="self">Self</span>: <span class="ident">Sized</span>;
<span class="kw">fn</span> <span class="ident">get_name</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">String</span>;
<span class="kw">fn</span> <span class="ident">get_handle</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledGraphicsPipelineHandle</span><span class="op">&gt;</span>;
<span class="kw">fn</span> <span class="ident">get_handle</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledShaderHandle</span><span class="op">&gt;</span>;
<span class="kw">fn</span> <span class="ident">get_pipeline</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Arc</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">GraphicsPipelineAbstract</span> <span class="op">+</span> <span class="ident">Sync</span> <span class="op">+</span> <span class="ident">Send</span><span class="op">&gt;</span>;
<span class="kw">fn</span> <span class="ident">get_renderpass</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Arc</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">RenderPassAbstract</span> <span class="op">+</span> <span class="ident">Send</span> <span class="op">+</span> <span class="ident">Sync</span><span class="op">&gt;</span>;
<span class="kw">fn</span> <span class="ident">recompile</span>(<span class="self">self</span>, <span class="ident">render_pass</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">RenderPassAbstract</span> <span class="op">+</span> <span class="ident">Send</span> <span class="op">+</span> <span class="ident">Sync</span><span class="op">&gt;</span>)

View File

@@ -179,7 +179,6 @@
<span id="179">179</span>
<span id="180">180</span>
<span id="181">181</span>
<span id="182">182</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">pipeline</span>::<span class="ident">GraphicsPipelineAbstract</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">sync</span>::<span class="ident">Arc</span>;
@@ -193,10 +192,9 @@
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">marker</span>::<span class="ident">PhantomData</span>;
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">pipeline</span>::<span class="ident">depth_stencil</span>::{<span class="ident">DepthStencil</span>, <span class="ident">Compare</span>, <span class="ident">DepthBounds</span>, <span class="ident">Stencil</span>, <span class="ident">StencilOp</span>};
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">pipeline</span>::<span class="ident">vertex</span>::{<span class="ident">SingleBufferDefinition</span>, <span class="ident">OneVertexOneInstanceDefinition</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">util</span>::<span class="ident">vertex_3d</span>::<span class="ident">Vertex3D</span>;
<span class="kw">use</span> <span class="ident">shade_runner</span> <span class="kw">as</span> <span class="ident">sr</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">shader</span>::<span class="ident">shader_common</span>::{<span class="ident">ShaderType</span>, <span class="ident">CompiledGraphicsPipelineResources</span>, <span class="ident">CompiledGraphicsPipeline</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">handles</span>::<span class="ident">CompiledGraphicsPipelineHandle</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">handles</span>::<span class="ident">CompiledShaderHandle</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">shader</span>::<span class="ident">generic_shader</span>::<span class="ident">GenericShader</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">shader</span>::<span class="ident">dynamic_vertex</span>::<span class="ident">RuntimeVertexDef</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">ShaderSpecializationConstants</span>;
@@ -215,7 +213,7 @@
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">TextShader</span> {
<span class="ident">graphics_pipeline</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">GraphicsPipelineAbstract</span> <span class="op">+</span> <span class="ident">Sync</span> <span class="op">+</span> <span class="ident">Send</span><span class="op">&gt;</span><span class="op">&gt;</span>,
<span class="ident">handle</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledGraphicsPipelineHandle</span><span class="op">&gt;</span>,
<span class="ident">handle</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledShaderHandle</span><span class="op">&gt;</span>,
<span class="ident">name</span>: <span class="ident">String</span>,
<span class="ident">device</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">Device</span><span class="op">&gt;</span>,
@@ -233,7 +231,7 @@
<span class="doccomment">/// This will explode when the shader does not want to compile</span>
<span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">filename</span>: <span class="ident">String</span>,
<span class="ident">device</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">Device</span><span class="op">&gt;</span>,
<span class="ident">handle</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledGraphicsPipelineHandle</span><span class="op">&gt;</span>,
<span class="ident">handle</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledShaderHandle</span><span class="op">&gt;</span>,
<span class="ident">render_pass</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">RenderPassAbstract</span> <span class="op">+</span> <span class="ident">Send</span> <span class="op">+</span> <span class="ident">Sync</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">TextShader</span> {
<span class="kw">let</span> <span class="ident">compiled_vertex</span> <span class="op">=</span> <span class="ident">GenericShader</span>::<span class="ident">compile</span>(
@@ -334,7 +332,7 @@
<span class="self">self</span>.<span class="ident">name</span>.<span class="ident">clone</span>()
}
<span class="kw">fn</span> <span class="ident">get_handle</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledGraphicsPipelineHandle</span><span class="op">&gt;</span> {
<span class="kw">fn</span> <span class="ident">get_handle</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledShaderHandle</span><span class="op">&gt;</span> {
<span class="self">self</span>.<span class="ident">handle</span>.<span class="ident">clone</span>()
}

View File

@@ -54,9 +54,7 @@
<span id="54">54</span>
<span id="55">55</span>
<span id="56">56</span>
<span id="57">57</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">canvas_state</span>::{<span class="ident">Drawable</span>};
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">sync</span>::<span class="ident">Arc</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">handles</span>::{<span class="ident">CanvasImageHandle</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">compute</span>::<span class="ident">managed</span>::<span class="ident">handles</span>::{<span class="ident">CompuKernelHandle</span>, <span class="ident">CompuBufferHandle</span>};
@@ -110,7 +108,7 @@
<span class="ident">buffer</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompuBufferHandle</span><span class="op">&gt;</span>,
<span class="ident">kernel</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompuKernelHandle</span><span class="op">&gt;</span>,
<span class="ident">sprite</span>: <span class="kw-2">&amp;</span><span class="ident">CompuSprite</span>) {
<span class="self">self</span>.<span class="ident">swapped_to_image</span>.<span class="ident">push</span>((<span class="ident">buffer</span>, <span class="ident">sprite</span>.<span class="ident">get_image_handle</span>().<span class="ident">unwrap</span>().<span class="ident">clone</span>(), <span class="ident">kernel</span>))
<span class="comment">// self.swapped_to_image.push((buffer, sprite.get_image_handle().unwrap().clone(), kernel))</span>
}
}</pre></div>
</section><section id="search" class="content hidden"></section><section class="footer"></section><aside id="help" class="hidden"><div><h1 class="hidden">Help</h1><div class="shortcuts"><h2>Keyboard Shortcuts</h2><dl><dt><kbd>?</kbd></dt><dd>Show this help dialog</dd><dt><kbd>S</kbd></dt><dd>Focus the search field</dd><dt><kbd></kbd></dt><dd>Move up in search results</dd><dt><kbd></kbd></dt><dd>Move down in search results</dd><dt><kbd></kbd></dt><dd>Switch tab</dd><dt><kbd>&#9166;</kbd></dt><dd>Go to active search result</dd><dt><kbd>+</kbd></dt><dd>Expand all sections</dd><dt><kbd>-</kbd></dt><dd>Collapse all sections</dd></dl></div><div class="infos"><h2>Search Tricks</h2><p>Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to restrict the search to a given type.</p><p>Accepted types are: <code>fn</code>, <code>mod</code>, <code>struct</code>, <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, and <code>const</code>.</p><p>Search functions by type signature (e.g., <code>vec -> usize</code> or <code>* -> vec</code>)</p><p>Search multiple things at once by splitting your query with comma (e.g., <code>str,u8</code> or <code>String,struct:Vec,test</code>)</p></div></div></aside><script>window.rootPath = "../../../";window.currentCrate = "sfml_rust";</script><script src="../../../aliases.js"></script><script src="../../../main.js"></script><script src="../../../source-script.js"></script><script src="../../../source-files.js"></script><script defer src="../../../search-index.js"></script></body></html>

View File

@@ -175,7 +175,6 @@
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">ffi</span>::<span class="ident">CStr</span>;
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">buffer</span>::{<span class="ident">CpuAccessibleBuffer</span>, <span class="ident">BufferUsage</span>};
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">sync</span>::<span class="ident">Arc</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">canvas_state</span>::{<span class="ident">Drawable</span>, <span class="ident">CanvasState</span>};
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">framebuffer</span>::<span class="ident">RenderPassAbstract</span>;
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">pipeline</span>::{<span class="ident">GraphicsPipelineAbstract</span>, <span class="ident">ComputePipeline</span>};
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">device</span>::<span class="ident">Device</span>;
@@ -197,6 +196,7 @@
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">compute</span>::<span class="ident">managed</span>::<span class="ident">compu_buffer</span>::<span class="ident">CompuBuffers</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">compute</span>::<span class="ident">managed</span>::<span class="ident">handles</span>::{<span class="ident">CompuKernelHandle</span>, <span class="ident">CompuBufferHandle</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">compute</span>::<span class="ident">managed</span>::<span class="ident">compu_kernel</span>::<span class="ident">CompuKernel</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">canvas_state</span>::<span class="ident">CanvasState</span>;
<span class="doccomment">/// State holding the compute buffers for computation and the kernels which will compute them</span>

View File

@@ -47,30 +47,7 @@
<span id="47">47</span>
<span id="48">48</span>
<span id="49">49</span>
<span id="50">50</span>
<span id="51">51</span>
<span id="52">52</span>
<span id="53">53</span>
<span id="54">54</span>
<span id="55">55</span>
<span id="56">56</span>
<span id="57">57</span>
<span id="58">58</span>
<span id="59">59</span>
<span id="60">60</span>
<span id="61">61</span>
<span id="62">62</span>
<span id="63">63</span>
<span id="64">64</span>
<span id="65">65</span>
<span id="66">66</span>
<span id="67">67</span>
<span id="68">68</span>
<span id="69">69</span>
<span id="70">70</span>
<span id="71">71</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">canvas_state</span>::{<span class="ident">Drawable</span>};
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">sync</span>::<span class="ident">Arc</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">handles</span>::{<span class="ident">CanvasImageHandle</span>, <span class="ident">CanvasTextureHandle</span>};
@@ -120,25 +97,5 @@
}
}
<span class="kw">impl</span> <span class="ident">Drawable</span> <span class="kw">for</span> <span class="ident">CompuSprite</span> {
<span class="kw">fn</span> <span class="ident">get_vertices</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Vec</span><span class="op">&lt;</span>(<span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>)<span class="op">&gt;</span> {
<span class="self">self</span>.<span class="ident">vertices</span>.<span class="ident">to_vec</span>()
}
<span class="kw">fn</span> <span class="ident">get_color</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> (<span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>) {
<span class="self">self</span>.<span class="ident">color</span>
}
<span class="kw">fn</span> <span class="ident">get_ti_coords</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Vec</span><span class="op">&lt;</span>(<span class="ident">f32</span>, <span class="ident">f32</span>)<span class="op">&gt;</span> {
<span class="self">self</span>.<span class="ident">ti_position</span>.<span class="ident">to_vec</span>()
}
<span class="kw">fn</span> <span class="ident">get_texture_handle</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasTextureHandle</span><span class="op">&gt;</span><span class="op">&gt;</span> {
<span class="prelude-val">None</span>
}
<span class="kw">fn</span> <span class="ident">get_image_handle</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasImageHandle</span><span class="op">&gt;</span><span class="op">&gt;</span> {
<span class="prelude-val">Some</span>(<span class="self">self</span>.<span class="ident">image_handle</span>.<span class="ident">clone</span>())
}
}</pre></div>
</pre></div>
</section><section id="search" class="content hidden"></section><section class="footer"></section><aside id="help" class="hidden"><div><h1 class="hidden">Help</h1><div class="shortcuts"><h2>Keyboard Shortcuts</h2><dl><dt><kbd>?</kbd></dt><dd>Show this help dialog</dd><dt><kbd>S</kbd></dt><dd>Focus the search field</dd><dt><kbd></kbd></dt><dd>Move up in search results</dd><dt><kbd></kbd></dt><dd>Move down in search results</dd><dt><kbd></kbd></dt><dd>Switch tab</dd><dt><kbd>&#9166;</kbd></dt><dd>Go to active search result</dd><dt><kbd>+</kbd></dt><dd>Expand all sections</dd><dt><kbd>-</kbd></dt><dd>Collapse all sections</dd></dl></div><div class="infos"><h2>Search Tricks</h2><p>Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to restrict the search to a given type.</p><p>Accepted types are: <code>fn</code>, <code>mod</code>, <code>struct</code>, <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, and <code>const</code>.</p><p>Search functions by type signature (e.g., <code>vec -> usize</code> or <code>* -> vec</code>)</p><p>Search multiple things at once by splitting your query with comma (e.g., <code>str,u8</code> or <code>String,struct:Vec,test</code>)</p></div></div></aside><script>window.rootPath = "../../../../";window.currentCrate = "sfml_rust";</script><script src="../../../../aliases.js"></script><script src="../../../../main.js"></script><script src="../../../../source-script.js"></script><script src="../../../../source-files.js"></script><script defer src="../../../../search-index.js"></script></body></html>

View File

@@ -233,6 +233,19 @@
<span id="233">233</span>
<span id="234">234</span>
<span id="235">235</span>
<span id="236">236</span>
<span id="237">237</span>
<span id="238">238</span>
<span id="239">239</span>
<span id="240">240</span>
<span id="241">241</span>
<span id="242">242</span>
<span id="243">243</span>
<span id="244">244</span>
<span id="245">245</span>
<span id="246">246</span>
<span id="247">247</span>
<span id="248">248</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="attribute">#![<span class="ident">allow</span>(<span class="ident">dead_code</span>)]</span>
<span class="attribute">#![<span class="ident">allow</span>(<span class="ident">unused_variables</span>)]</span>
@@ -258,11 +271,13 @@
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">util</span>::<span class="ident">load_raw</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">sprite</span>::{<span class="ident">Poly</span>, <span class="ident">Text</span>, <span class="ident">TextHandle</span>, <span class="ident">TextVertex</span>, <span class="ident">TextInstance</span>};
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">instance</span>::<span class="ident">debug</span>::<span class="ident">DebugCallback</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">compute</span>::<span class="ident">compu_frame</span>::<span class="ident">CompuFrame</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">canvas_frame</span>::{<span class="ident">CanvasFrame</span>, <span class="ident">GenericCanvasFrame</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">canvas_frame</span>::{<span class="ident">CanvasFrameTest</span>, <span class="ident">DrawableTest</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">compute</span>::<span class="ident">managed</span>::<span class="ident">compu_sprite</span>::<span class="ident">CompuSprite</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">sync</span>::<span class="ident">Arc</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">handles</span>::{<span class="ident">CanvasTextureHandle</span>, <span class="ident">Handle</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">util</span>::<span class="ident">vertex</span>::{<span class="ident">VertexTypes</span>, <span class="ident">TextureVertex2D</span>};
<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">util</span>;
@@ -290,6 +305,7 @@
*/</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">main</span>() {
<span class="ident">hprof</span>::<span class="ident">start_frame</span>();
@@ -322,6 +338,9 @@
<span class="ident">processor</span>.<span class="ident">preload_fonts</span>();
}
<span class="kw">let</span> <span class="ident">q2</span> <span class="op">=</span> <span class="ident">hprof</span>::<span class="ident">enter</span>(<span class="string">&quot;Game Objects&quot;</span>);
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">timer</span> <span class="op">=</span> <span class="ident">Timer</span>::<span class="ident">new</span>();
@@ -349,12 +368,12 @@
<span class="kw">let</span> <span class="ident">sfml_handle</span> <span class="op">=</span> <span class="ident">processor</span>.<span class="ident">get_texture_handle</span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">&quot;sfml.png&quot;</span>)).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">font_handle</span> <span class="op">=</span> <span class="ident">processor</span>.<span class="ident">get_font_handle</span>(<span class="ident">String</span>::<span class="ident">from</span>(<span class="string">&quot;sansation.ttf&quot;</span>)).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">funky_sprite</span> <span class="op">=</span> <span class="ident">Sprite</span>::<span class="ident">new_with_texture</span>((<span class="number">0.0</span>, <span class="op">-</span><span class="number">0.5</span>), (<span class="number">0.5</span>, <span class="number">0.5</span>), <span class="number">0</span>, <span class="ident">funky_handle</span>.<span class="ident">clone</span>());
<span class="kw">let</span> <span class="ident">sfml_sprite</span> <span class="op">=</span> <span class="ident">Sprite</span>::<span class="ident">new_with_texture</span>((<span class="number">0.0</span>, <span class="op">-</span><span class="number">0.5</span>), (<span class="number">0.5</span>, <span class="number">0.5</span>), <span class="number">1</span>, <span class="ident">sfml_handle</span>.<span class="ident">clone</span>());
<span class="kw">let</span> <span class="ident">text_sprite</span> <span class="op">=</span> <span class="ident">Text</span>::<span class="ident">new</span>((<span class="op">-</span><span class="number">0.1</span>,<span class="op">-</span><span class="number">0.1</span>), (<span class="number">10.0</span>, <span class="number">10.0</span>), <span class="ident">font_handle</span>.<span class="ident">clone</span>());
<span class="kw">let</span> <span class="ident">funky_sprite</span> <span class="op">=</span> <span class="ident">Sprite</span>::<span class="ident">new</span>((<span class="number">0.0</span>, <span class="op">-</span><span class="number">0.5</span>), (<span class="number">0.5</span>, <span class="number">0.5</span>), <span class="number">0</span>, <span class="ident">funky_handle</span>.<span class="ident">clone</span>());
<span class="kw">let</span> <span class="ident">sfml_sprite</span> <span class="op">=</span> <span class="ident">Sprite</span>::<span class="ident">new</span>((<span class="number">0.0</span>, <span class="op">-</span><span class="number">0.5</span>), (<span class="number">0.5</span>, <span class="number">0.5</span>), <span class="number">1</span>, <span class="ident">sfml_handle</span>.<span class="ident">clone</span>());
<span class="comment">//let text_sprite = Text::new((-0.1,-0.1), (10.0, 10.0), font_handle.clone());</span>
<span class="kw">let</span> <span class="ident">test_polygon</span> <span class="op">=</span> <span class="ident">Poly</span>::<span class="ident">new_with_color</span>((<span class="op">-</span><span class="number">0.5</span>, <span class="op">-</span><span class="number">0.5</span>), (<span class="number">0.5</span>, <span class="number">0.5</span>), <span class="number">1</span>, (<span class="number">1.0</span>,<span class="number">0.0</span>,<span class="number">0.0</span>,<span class="number">0.0</span>));
<span class="comment">//let test_polygon = Poly::new_with_color((-0.5, -0.5), (0.5, 0.5), 1, (1.0,0.0,0.0,0.0));</span>
<span class="ident">drop</span>(<span class="ident">q2</span>);
<span class="ident">drop</span>(<span class="ident">q1</span>);
@@ -413,18 +432,25 @@
<span class="kw">break</span>;
}
<span class="kw">let</span> <span class="ident">funky_sprite</span> <span class="op">=</span> <span class="ident">Sprite</span>::<span class="ident">new</span>((<span class="number">0.0</span>, <span class="op">-</span><span class="number">0.5</span>), (<span class="number">0.5</span>, <span class="number">0.5</span>), <span class="number">0</span>, <span class="ident">funky_handle</span>.<span class="ident">clone</span>());
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">canvas_frame</span> <span class="op">=</span> <span class="ident">CanvasFrameTest</span>::<span class="ident">default</span>();
<span class="ident">canvas_frame</span>.<span class="ident">draw</span>(<span class="kw-2">&amp;</span><span class="ident">funky_sprite</span>);
<span class="ident">canvas_frame</span>.<span class="ident">draw</span>(<span class="kw-2">&amp;</span><span class="ident">sfml_sprite</span>);
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">compu_frame</span> <span class="op">=</span> <span class="ident">CompuFrame</span>::<span class="ident">new</span>();
<span class="comment">// compu_frame.add(compute_buffer.clone(), compute_kernel.clone());</span>
<span class="comment">// compu_frame.add_with_image_swap(compute_buffer.clone(), compute_kernel.clone(), &amp;compu_sprite1);</span>
<span class="comment">//</span>
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">canvas</span> <span class="op">=</span> <span class="ident">CanvasFrame</span>::<span class="ident">new</span>();
<span class="ident">canvas</span>.<span class="ident">draw</span>(<span class="kw-2">&amp;</span><span class="ident">funky_sprite</span>);
<span class="ident">canvas</span>.<span class="ident">draw</span>(<span class="kw-2">&amp;</span><span class="ident">test_polygon</span>);
<span class="comment">// let mut canvas = CanvasFrame::new();</span>
<span class="comment">// canvas.draw(&amp;funky_sprite);</span>
<span class="comment">// canvas.draw(&amp;test_polygon);</span>
{
<span class="kw">let</span> <span class="ident">g</span> <span class="op">=</span> <span class="ident">hprof</span>::<span class="ident">enter</span>(<span class="string">&quot;Run&quot;</span>);
<span class="ident">processor</span>.<span class="ident">run</span>(<span class="kw-2">&amp;</span><span class="ident">surface</span>,
<span class="ident">canvas</span>,
<span class="ident">canvas_frame</span>,
<span class="ident">compu_frame</span>);
}
}

View File

@@ -1,638 +1,91 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source to the Rust file `src/sprite.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>sprite.rs.html -- source</title><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css"><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script src="../../storage.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="shortcut icon" href="../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc source"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../sfml_rust/index.html'><div class='logo-container'><img src='../../rust-logo.png' alt='logo'></div></a></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../theme.js"></script><nav class="sub"><form class="search-form js-only"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../settings.html"><img src="../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><pre class="line-numbers"><span id="1"> 1</span>
<span id="2"> 2</span>
<span id="3"> 3</span>
<span id="4"> 4</span>
<span id="5"> 5</span>
<span id="6"> 6</span>
<span id="7"> 7</span>
<span id="8"> 8</span>
<span id="9"> 9</span>
<span id="10"> 10</span>
<span id="11"> 11</span>
<span id="12"> 12</span>
<span id="13"> 13</span>
<span id="14"> 14</span>
<span id="15"> 15</span>
<span id="16"> 16</span>
<span id="17"> 17</span>
<span id="18"> 18</span>
<span id="19"> 19</span>
<span id="20"> 20</span>
<span id="21"> 21</span>
<span id="22"> 22</span>
<span id="23"> 23</span>
<span id="24"> 24</span>
<span id="25"> 25</span>
<span id="26"> 26</span>
<span id="27"> 27</span>
<span id="28"> 28</span>
<span id="29"> 29</span>
<span id="30"> 30</span>
<span id="31"> 31</span>
<span id="32"> 32</span>
<span id="33"> 33</span>
<span id="34"> 34</span>
<span id="35"> 35</span>
<span id="36"> 36</span>
<span id="37"> 37</span>
<span id="38"> 38</span>
<span id="39"> 39</span>
<span id="40"> 40</span>
<span id="41"> 41</span>
<span id="42"> 42</span>
<span id="43"> 43</span>
<span id="44"> 44</span>
<span id="45"> 45</span>
<span id="46"> 46</span>
<span id="47"> 47</span>
<span id="48"> 48</span>
<span id="49"> 49</span>
<span id="50"> 50</span>
<span id="51"> 51</span>
<span id="52"> 52</span>
<span id="53"> 53</span>
<span id="54"> 54</span>
<span id="55"> 55</span>
<span id="56"> 56</span>
<span id="57"> 57</span>
<span id="58"> 58</span>
<span id="59"> 59</span>
<span id="60"> 60</span>
<span id="61"> 61</span>
<span id="62"> 62</span>
<span id="63"> 63</span>
<span id="64"> 64</span>
<span id="65"> 65</span>
<span id="66"> 66</span>
<span id="67"> 67</span>
<span id="68"> 68</span>
<span id="69"> 69</span>
<span id="70"> 70</span>
<span id="71"> 71</span>
<span id="72"> 72</span>
<span id="73"> 73</span>
<span id="74"> 74</span>
<span id="75"> 75</span>
<span id="76"> 76</span>
<span id="77"> 77</span>
<span id="78"> 78</span>
<span id="79"> 79</span>
<span id="80"> 80</span>
<span id="81"> 81</span>
<span id="82"> 82</span>
<span id="83"> 83</span>
<span id="84"> 84</span>
<span id="85"> 85</span>
<span id="86"> 86</span>
<span id="87"> 87</span>
<span id="88"> 88</span>
<span id="89"> 89</span>
<span id="90"> 90</span>
<span id="91"> 91</span>
<span id="92"> 92</span>
<span id="93"> 93</span>
<span id="94"> 94</span>
<span id="95"> 95</span>
<span id="96"> 96</span>
<span id="97"> 97</span>
<span id="98"> 98</span>
<span id="99"> 99</span>
<span id="100">100</span>
<span id="101">101</span>
<span id="102">102</span>
<span id="103">103</span>
<span id="104">104</span>
<span id="105">105</span>
<span id="106">106</span>
<span id="107">107</span>
<span id="108">108</span>
<span id="109">109</span>
<span id="110">110</span>
<span id="111">111</span>
<span id="112">112</span>
<span id="113">113</span>
<span id="114">114</span>
<span id="115">115</span>
<span id="116">116</span>
<span id="117">117</span>
<span id="118">118</span>
<span id="119">119</span>
<span id="120">120</span>
<span id="121">121</span>
<span id="122">122</span>
<span id="123">123</span>
<span id="124">124</span>
<span id="125">125</span>
<span id="126">126</span>
<span id="127">127</span>
<span id="128">128</span>
<span id="129">129</span>
<span id="130">130</span>
<span id="131">131</span>
<span id="132">132</span>
<span id="133">133</span>
<span id="134">134</span>
<span id="135">135</span>
<span id="136">136</span>
<span id="137">137</span>
<span id="138">138</span>
<span id="139">139</span>
<span id="140">140</span>
<span id="141">141</span>
<span id="142">142</span>
<span id="143">143</span>
<span id="144">144</span>
<span id="145">145</span>
<span id="146">146</span>
<span id="147">147</span>
<span id="148">148</span>
<span id="149">149</span>
<span id="150">150</span>
<span id="151">151</span>
<span id="152">152</span>
<span id="153">153</span>
<span id="154">154</span>
<span id="155">155</span>
<span id="156">156</span>
<span id="157">157</span>
<span id="158">158</span>
<span id="159">159</span>
<span id="160">160</span>
<span id="161">161</span>
<span id="162">162</span>
<span id="163">163</span>
<span id="164">164</span>
<span id="165">165</span>
<span id="166">166</span>
<span id="167">167</span>
<span id="168">168</span>
<span id="169">169</span>
<span id="170">170</span>
<span id="171">171</span>
<span id="172">172</span>
<span id="173">173</span>
<span id="174">174</span>
<span id="175">175</span>
<span id="176">176</span>
<span id="177">177</span>
<span id="178">178</span>
<span id="179">179</span>
<span id="180">180</span>
<span id="181">181</span>
<span id="182">182</span>
<span id="183">183</span>
<span id="184">184</span>
<span id="185">185</span>
<span id="186">186</span>
<span id="187">187</span>
<span id="188">188</span>
<span id="189">189</span>
<span id="190">190</span>
<span id="191">191</span>
<span id="192">192</span>
<span id="193">193</span>
<span id="194">194</span>
<span id="195">195</span>
<span id="196">196</span>
<span id="197">197</span>
<span id="198">198</span>
<span id="199">199</span>
<span id="200">200</span>
<span id="201">201</span>
<span id="202">202</span>
<span id="203">203</span>
<span id="204">204</span>
<span id="205">205</span>
<span id="206">206</span>
<span id="207">207</span>
<span id="208">208</span>
<span id="209">209</span>
<span id="210">210</span>
<span id="211">211</span>
<span id="212">212</span>
<span id="213">213</span>
<span id="214">214</span>
<span id="215">215</span>
<span id="216">216</span>
<span id="217">217</span>
<span id="218">218</span>
<span id="219">219</span>
<span id="220">220</span>
<span id="221">221</span>
<span id="222">222</span>
<span id="223">223</span>
<span id="224">224</span>
<span id="225">225</span>
<span id="226">226</span>
<span id="227">227</span>
<span id="228">228</span>
<span id="229">229</span>
<span id="230">230</span>
<span id="231">231</span>
<span id="232">232</span>
<span id="233">233</span>
<span id="234">234</span>
<span id="235">235</span>
<span id="236">236</span>
<span id="237">237</span>
<span id="238">238</span>
<span id="239">239</span>
<span id="240">240</span>
<span id="241">241</span>
<span id="242">242</span>
<span id="243">243</span>
<span id="244">244</span>
<span id="245">245</span>
<span id="246">246</span>
<span id="247">247</span>
<span id="248">248</span>
<span id="249">249</span>
<span id="250">250</span>
<span id="251">251</span>
<span id="252">252</span>
<span id="253">253</span>
<span id="254">254</span>
<span id="255">255</span>
<span id="256">256</span>
<span id="257">257</span>
<span id="258">258</span>
<span id="259">259</span>
<span id="260">260</span>
<span id="261">261</span>
<span id="262">262</span>
<span id="263">263</span>
<span id="264">264</span>
<span id="265">265</span>
<span id="266">266</span>
<span id="267">267</span>
<span id="268">268</span>
<span id="269">269</span>
<span id="270">270</span>
<span id="271">271</span>
<span id="272">272</span>
<span id="273">273</span>
<span id="274">274</span>
<span id="275">275</span>
<span id="276">276</span>
<span id="277">277</span>
<span id="278">278</span>
<span id="279">279</span>
<span id="280">280</span>
<span id="281">281</span>
<span id="282">282</span>
<span id="283">283</span>
<span id="284">284</span>
<span id="285">285</span>
<span id="286">286</span>
<span id="287">287</span>
<span id="288">288</span>
<span id="289">289</span>
<span id="290">290</span>
<span id="291">291</span>
<span id="292">292</span>
<span id="293">293</span>
<span id="294">294</span>
<span id="295">295</span>
<span id="296">296</span>
<span id="297">297</span>
<span id="298">298</span>
<span id="299">299</span>
<span id="300">300</span>
<span id="301">301</span>
<span id="302">302</span>
<span id="303">303</span>
<span id="304">304</span>
<span id="305">305</span>
<span id="306">306</span>
<span id="307">307</span>
<span id="308">308</span>
<span id="309">309</span>
<span id="310">310</span>
<span id="311">311</span>
<span id="312">312</span>
<span id="313">313</span>
<span id="314">314</span>
<span id="315">315</span>
<span id="316">316</span>
<span id="317">317</span>
<span id="318">318</span>
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source to the Rust file `src/sprite.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>sprite.rs.html -- source</title><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css"><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script src="../../storage.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="shortcut icon" href="../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc source"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../sfml_rust/index.html'><div class='logo-container'><img src='../../rust-logo.png' alt='logo'></div></a></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../theme.js"></script><nav class="sub"><form class="search-form js-only"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../settings.html"><img src="../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><pre class="line-numbers"><span id="1"> 1</span>
<span id="2"> 2</span>
<span id="3"> 3</span>
<span id="4"> 4</span>
<span id="5"> 5</span>
<span id="6"> 6</span>
<span id="7"> 7</span>
<span id="8"> 8</span>
<span id="9"> 9</span>
<span id="10">10</span>
<span id="11">11</span>
<span id="12">12</span>
<span id="13">13</span>
<span id="14">14</span>
<span id="15">15</span>
<span id="16">16</span>
<span id="17">17</span>
<span id="18">18</span>
<span id="19">19</span>
<span id="20">20</span>
<span id="21">21</span>
<span id="22">22</span>
<span id="23">23</span>
<span id="24">24</span>
<span id="25">25</span>
<span id="26">26</span>
<span id="27">27</span>
<span id="28">28</span>
<span id="29">29</span>
<span id="30">30</span>
<span id="31">31</span>
<span id="32">32</span>
<span id="33">33</span>
<span id="34">34</span>
<span id="35">35</span>
<span id="36">36</span>
<span id="37">37</span>
<span id="38">38</span>
<span id="39">39</span>
<span id="40">40</span>
<span id="41">41</span>
<span id="42">42</span>
<span id="43">43</span>
<span id="44">44</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">sync</span>::<span class="ident">Arc</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">util</span>::<span class="ident">vertex_3d</span>::<span class="ident">Vertex3D</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="kw-2">*</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">handles</span>::{<span class="ident">CanvasFontHandle</span>, <span class="ident">CanvasImageHandle</span>, <span class="ident">CanvasTextureHandle</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">handles</span>::{<span class="ident">CanvasFontHandle</span>, <span class="ident">CanvasImageHandle</span>, <span class="ident">CanvasTextureHandle</span>, <span class="ident">Handle</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">shader</span>::<span class="ident">text_shader</span>::<span class="ident">GlyphInstance</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">canvas_state</span>::{<span class="ident">DrawableTest</span>, <span class="ident">Drawable</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">canvas_frame</span>::{<span class="ident">DrawableTest</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">util</span>::<span class="ident">vertex</span>::{<span class="ident">VertexTypes</span>, <span class="ident">TextureVertex2D</span>, <span class="ident">Vertex3D</span>};
<span class="doccomment">///</span>
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Sprite</span> {
<span class="kw">pub</span> <span class="ident">vertices</span>: [(<span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>); <span class="number">6</span>],
<span class="kw">pub</span> <span class="ident">ti_position</span>: [(<span class="ident">f32</span>, <span class="ident">f32</span>); <span class="number">6</span>],
<span class="kw">pub</span> <span class="ident">verts</span>: <span class="ident">VertexTypes</span>,
<span class="ident">position</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>),
<span class="ident">size</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>),
<span class="ident">color</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>),
<span class="ident">textured</span>: <span class="ident">bool</span>,
<span class="ident">texture_handle</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasTextureHandle</span><span class="op">&gt;</span><span class="op">&gt;</span>,
<span class="ident">value</span>: <span class="ident">GlyphInstance</span>,
}
<span class="doccomment">/// Container class which implements drawable.</span>
<span class="kw">impl</span> <span class="ident">Sprite</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">position</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>), <span class="ident">size</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>)) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Sprite</span> {
<span class="ident">Sprite</span>::<span class="ident">new_with_color</span>(<span class="ident">position</span>, <span class="ident">size</span>, <span class="number">0</span>, (<span class="number">0.</span>, <span class="number">0.</span>, <span class="number">0.</span>, <span class="number">0.</span>))
}
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new_with_color</span>(<span class="ident">position</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>),
<span class="ident">size</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>),
<span class="ident">depth</span>: <span class="ident">u32</span>,
<span class="ident">color</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>)) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Sprite</span> {
<span class="kw">let</span> <span class="ident">normalized_depth</span> <span class="op">=</span> (<span class="ident">depth</span> <span class="kw">as</span> <span class="ident">f32</span> <span class="op">/</span> <span class="number">255.0</span>);
<span class="ident">Sprite</span> {
<span class="ident">vertices</span>: [
(<span class="ident">position</span>.<span class="number">0</span>, <span class="ident">position</span>.<span class="number">1</span>, <span class="ident">normalized_depth</span>), <span class="comment">// top left</span>
(<span class="ident">position</span>.<span class="number">0</span>, <span class="ident">position</span>.<span class="number">1</span> <span class="op">+</span> <span class="ident">size</span>.<span class="number">1</span>, <span class="ident">normalized_depth</span>), <span class="comment">// bottom left</span>
(<span class="ident">position</span>.<span class="number">0</span> <span class="op">+</span> <span class="ident">size</span>.<span class="number">0</span>, <span class="ident">position</span>.<span class="number">1</span> <span class="op">+</span> <span class="ident">size</span>.<span class="number">1</span>, <span class="ident">normalized_depth</span>), <span class="comment">// bottom right</span>
(<span class="ident">position</span>.<span class="number">0</span>, <span class="ident">position</span>.<span class="number">1</span>, <span class="ident">normalized_depth</span>), <span class="comment">// top left</span>
(<span class="ident">position</span>.<span class="number">0</span> <span class="op">+</span> <span class="ident">size</span>.<span class="number">0</span>, <span class="ident">position</span>.<span class="number">1</span> <span class="op">+</span> <span class="ident">size</span>.<span class="number">1</span>, <span class="ident">normalized_depth</span>), <span class="comment">// bottom right</span>
(<span class="ident">position</span>.<span class="number">0</span> <span class="op">+</span> <span class="ident">size</span>.<span class="number">0</span>, <span class="ident">position</span>.<span class="number">1</span>, <span class="ident">normalized_depth</span>), <span class="comment">// top right</span>
],
<span class="ident">position</span>: <span class="ident">position</span>,
<span class="ident">ti_position</span>: [
(<span class="op">-</span><span class="number">0.0</span>, <span class="op">-</span><span class="number">0.0</span>), <span class="comment">// top left</span>
(<span class="op">-</span><span class="number">0.0</span>, <span class="number">1.0</span>), <span class="comment">// bottom left</span>
(<span class="number">1.0</span>, <span class="number">1.0</span>), <span class="comment">// bottom right</span>
(<span class="op">-</span><span class="number">0.0</span>, <span class="op">-</span><span class="number">0.0</span>), <span class="comment">// top left</span>
(<span class="number">1.0</span>, <span class="number">1.0</span>), <span class="comment">// bottom right</span>
(<span class="number">1.0</span>, <span class="op">-</span><span class="number">0.0</span>), <span class="comment">// top right</span>
],
<span class="ident">size</span>: <span class="ident">size</span>,
<span class="ident">color</span>: <span class="ident">color</span>,
<span class="ident">textured</span>: <span class="bool-val">false</span>,
<span class="ident">texture_handle</span>: <span class="prelude-val">None</span>,
<span class="ident">value</span>: <span class="ident">GlyphInstance</span> {
<span class="ident">screen_position</span>: (<span class="number">0.0</span>, <span class="number">0.0</span>),
<span class="ident">atlas_position</span>: (<span class="number">0.0</span>, <span class="number">0.0</span>),
<span class="ident">atlas_size</span>: (<span class="number">0.0</span>, <span class="number">0.0</span>),
<span class="ident">scale</span>: <span class="number">0.0</span>,
},
}
}
<span class="doccomment">///</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new_with_texture</span>(<span class="ident">position</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>),
<span class="ident">size</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>),
<span class="ident">depth</span>: <span class="ident">u32</span>,
<span class="ident">texture_handle</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasTextureHandle</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Sprite</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">position</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>),
<span class="ident">size</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>),
<span class="ident">depth</span>: <span class="ident">u32</span>,
<span class="ident">texture_handle</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasTextureHandle</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Sprite</span> {
<span class="kw">let</span> <span class="ident">normalized_depth</span> <span class="op">=</span> (<span class="ident">depth</span> <span class="kw">as</span> <span class="ident">f32</span> <span class="op">/</span> <span class="number">255.0</span>);
<span class="ident">Sprite</span> {
<span class="ident">vertices</span>: [
(<span class="ident">position</span>.<span class="number">0</span>, <span class="ident">position</span>.<span class="number">1</span>, <span class="ident">normalized_depth</span>), <span class="comment">// top left</span>
(<span class="ident">position</span>.<span class="number">0</span>, <span class="ident">position</span>.<span class="number">1</span> <span class="op">+</span> <span class="ident">size</span>.<span class="number">1</span>, <span class="ident">normalized_depth</span>), <span class="comment">// bottom left</span>
(<span class="ident">position</span>.<span class="number">0</span> <span class="op">+</span> <span class="ident">size</span>.<span class="number">0</span>, <span class="ident">position</span>.<span class="number">1</span> <span class="op">+</span> <span class="ident">size</span>.<span class="number">1</span>, <span class="ident">normalized_depth</span>), <span class="comment">// bottom right</span>
(<span class="ident">position</span>.<span class="number">0</span>, <span class="ident">position</span>.<span class="number">1</span>, <span class="ident">normalized_depth</span>), <span class="comment">// top left</span>
(<span class="ident">position</span>.<span class="number">0</span> <span class="op">+</span> <span class="ident">size</span>.<span class="number">0</span>, <span class="ident">position</span>.<span class="number">1</span> <span class="op">+</span> <span class="ident">size</span>.<span class="number">1</span>, <span class="ident">normalized_depth</span>), <span class="comment">// bottom right</span>
(<span class="ident">position</span>.<span class="number">0</span> <span class="op">+</span> <span class="ident">size</span>.<span class="number">0</span>, <span class="ident">position</span>.<span class="number">1</span>, <span class="ident">normalized_depth</span>), <span class="comment">// top right</span>
],
<span class="ident">verts</span>: <span class="ident">VertexTypes</span>::<span class="ident">TextureType</span>(<span class="ident">Vec</span>::<span class="ident">new</span>(), <span class="ident">texture_handle</span>),
<span class="ident">position</span>: <span class="ident">position</span>,
<span class="ident">ti_position</span>: [
(<span class="op">-</span><span class="number">0.0</span>, <span class="op">-</span><span class="number">0.0</span>), <span class="comment">// top left</span>
(<span class="op">-</span><span class="number">0.0</span>, <span class="number">1.0</span>), <span class="comment">// bottom left</span>
(<span class="number">1.0</span>, <span class="number">1.0</span>), <span class="comment">// bottom right</span>
(<span class="op">-</span><span class="number">0.0</span>, <span class="op">-</span><span class="number">0.0</span>), <span class="comment">// top left</span>
(<span class="number">1.0</span>, <span class="number">1.0</span>), <span class="comment">// bottom right</span>
(<span class="number">1.0</span>, <span class="op">-</span><span class="number">0.0</span>), <span class="comment">// top right</span>
],
<span class="ident">size</span>: <span class="ident">size</span>,
<span class="ident">color</span>: (<span class="number">1.0</span>, <span class="number">0.0</span>, <span class="number">0.0</span>, <span class="number">1.0</span>),
<span class="ident">textured</span>: <span class="bool-val">true</span>,
<span class="ident">texture_handle</span>: <span class="prelude-val">Some</span>(<span class="ident">texture_handle</span>.<span class="ident">clone</span>()),
<span class="ident">value</span>: <span class="ident">Default</span>::<span class="ident">default</span>(),
}
}
}
<span class="kw">impl</span><span class="op">&lt;</span><span class="ident">H</span>, <span class="ident">In</span><span class="op">&gt;</span> <span class="ident">DrawableTest</span><span class="op">&lt;</span><span class="ident">Vertex3D</span>, <span class="ident">H</span>, <span class="ident">In</span><span class="op">&gt;</span> <span class="kw">for</span> <span class="ident">Sprite</span> {
<span class="kw">fn</span> <span class="ident">get_vertices</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Vertex3D</span><span class="op">&gt;</span> {
<span class="macro">unimplemented</span><span class="macro">!</span>()
<span class="kw">impl</span> <span class="ident">DrawableTest</span> <span class="kw">for</span> <span class="ident">Sprite</span>{
<span class="kw">fn</span> <span class="ident">get</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">VertexTypes</span> {
<span class="self">self</span>.<span class="ident">verts</span>.<span class="ident">clone</span>()
}
<span class="kw">fn</span> <span class="ident">get_instances</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">In</span><span class="op">&gt;</span> {
<span class="macro">unimplemented</span><span class="macro">!</span>()
}
<span class="kw">fn</span> <span class="ident">get_handle</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">H</span> {
<span class="macro">unimplemented</span><span class="macro">!</span>()
}
}
<span class="kw">impl</span> <span class="ident">Drawable</span> <span class="kw">for</span> <span class="ident">Sprite</span> {
<span class="kw">fn</span> <span class="ident">get_vertices</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Vec</span><span class="op">&lt;</span>(<span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>)<span class="op">&gt;</span> {
<span class="self">self</span>.<span class="ident">vertices</span>.<span class="ident">to_vec</span>()
}
<span class="kw">fn</span> <span class="ident">get_color</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> (<span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>) {
<span class="self">self</span>.<span class="ident">color</span>.<span class="ident">clone</span>()
}
<span class="kw">fn</span> <span class="ident">get_ti_coords</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Vec</span><span class="op">&lt;</span>(<span class="ident">f32</span>, <span class="ident">f32</span>)<span class="op">&gt;</span> {
<span class="self">self</span>.<span class="ident">ti_position</span>.<span class="ident">to_vec</span>()
}
<span class="kw">fn</span> <span class="ident">get_texture_handle</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasTextureHandle</span><span class="op">&gt;</span><span class="op">&gt;</span> {
<span class="kw">match</span> <span class="self">self</span>.<span class="ident">textured</span> {
<span class="bool-val">true</span> <span class="op">=</span><span class="op">&gt;</span> {
<span class="self">self</span>.<span class="ident">texture_handle</span>.<span class="ident">clone</span>()
}
<span class="bool-val">false</span> <span class="op">=</span><span class="op">&gt;</span> <span class="prelude-val">None</span>,
}
}
<span class="kw">fn</span> <span class="ident">get_image_handle</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasImageHandle</span><span class="op">&gt;</span><span class="op">&gt;</span> {
<span class="prelude-val">None</span>
}
}
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Poly</span> {
<span class="kw">pub</span> <span class="ident">vertices</span>: <span class="ident">Vec</span><span class="op">&lt;</span>(<span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>)<span class="op">&gt;</span>,
<span class="kw">pub</span> <span class="ident">ti_position</span>: <span class="ident">Vec</span><span class="op">&lt;</span>(<span class="ident">f32</span>, <span class="ident">f32</span>)<span class="op">&gt;</span>,
<span class="ident">position</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>),
<span class="ident">size</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>),
<span class="ident">color</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>),
<span class="ident">textured</span>: <span class="ident">bool</span>,
<span class="ident">texture_handle</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasTextureHandle</span><span class="op">&gt;</span><span class="op">&gt;</span>,
<span class="comment">// ==================================</span>
}
<span class="doccomment">/// Container class which implements drawable.</span>
<span class="kw">impl</span> <span class="ident">Poly</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">position</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>), <span class="ident">size</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>)) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Poly</span> {
<span class="ident">Poly</span>::<span class="ident">new_with_color</span>(<span class="ident">position</span>, <span class="ident">size</span>, <span class="number">0</span>, (<span class="number">0.</span>, <span class="number">0.</span>, <span class="number">0.</span>, <span class="number">0.</span>))
}
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new_with_color</span>(<span class="ident">position</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>),
<span class="ident">size</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>),
<span class="ident">depth</span>: <span class="ident">u32</span>,
<span class="ident">color</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>)) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Poly</span> {
<span class="kw">let</span> <span class="ident">normalized_depth</span> <span class="op">=</span> (<span class="ident">depth</span> <span class="kw">as</span> <span class="ident">f32</span> <span class="op">/</span> <span class="number">255.0</span>);
<span class="ident">Poly</span> {
<span class="ident">vertices</span>: <span class="macro">vec</span><span class="macro">!</span>[
(<span class="op">-</span><span class="number">0.5</span>, <span class="op">-</span><span class="number">0.5</span>, <span class="ident">normalized_depth</span>),
(<span class="op">-</span><span class="number">1.0</span>, <span class="number">1.0</span>, <span class="ident">normalized_depth</span>),
(<span class="op">-</span><span class="number">0.25</span>, <span class="number">0.0</span>, <span class="ident">normalized_depth</span>),
(<span class="op">-</span><span class="number">0.25</span>, <span class="number">0.0</span>, <span class="ident">normalized_depth</span>),
(<span class="op">-</span><span class="number">1.0</span>, <span class="number">1.0</span>, <span class="ident">normalized_depth</span>),
(<span class="number">0.0</span>, <span class="number">0.5</span>, <span class="ident">normalized_depth</span>),
(<span class="number">0.25</span>, <span class="number">0.0</span>, <span class="ident">normalized_depth</span>),
(<span class="op">-</span><span class="number">1.0</span>, <span class="number">1.0</span>, <span class="ident">normalized_depth</span>),
(<span class="number">0.0</span>, <span class="number">0.5</span>, <span class="ident">normalized_depth</span>),
(<span class="number">0.5</span>, <span class="op">-</span><span class="number">0.5</span>, <span class="ident">normalized_depth</span>),
(<span class="op">-</span><span class="number">1.0</span>, <span class="number">1.0</span>, <span class="ident">normalized_depth</span>),
(<span class="number">0.25</span>, <span class="number">0.0</span>, <span class="ident">normalized_depth</span>),
(<span class="number">0.25</span>, <span class="op">-</span><span class="number">0.5</span>, <span class="ident">normalized_depth</span>),
(<span class="op">-</span><span class="number">1.0</span>, <span class="number">1.0</span>, <span class="ident">normalized_depth</span>),
(<span class="number">0.5</span>, <span class="op">-</span><span class="number">0.5</span>, <span class="ident">normalized_depth</span>),
(<span class="number">0.25</span>, <span class="op">-</span><span class="number">0.5</span>, <span class="ident">normalized_depth</span>),
(<span class="op">-</span><span class="number">1.0</span>, <span class="number">1.0</span>, <span class="ident">normalized_depth</span>),
(<span class="number">0.0</span>, <span class="op">-</span><span class="number">0.1</span>, <span class="ident">normalized_depth</span>),
(<span class="op">-</span><span class="number">0.25</span>, <span class="op">-</span><span class="number">0.5</span>, <span class="ident">normalized_depth</span>),
(<span class="op">-</span><span class="number">1.0</span>, <span class="number">1.0</span>, <span class="ident">normalized_depth</span>),
(<span class="number">0.0</span>, <span class="op">-</span><span class="number">0.1</span>, <span class="ident">normalized_depth</span>),
(<span class="op">-</span><span class="number">0.5</span>, <span class="op">-</span><span class="number">0.5</span>, <span class="ident">normalized_depth</span>),
(<span class="op">-</span><span class="number">1.0</span>, <span class="number">1.0</span>, <span class="ident">normalized_depth</span>),
(<span class="op">-</span><span class="number">0.25</span>, <span class="op">-</span><span class="number">0.5</span>, <span class="ident">normalized_depth</span>),
],
<span class="ident">position</span>: <span class="ident">position</span>,
<span class="ident">ti_position</span>: <span class="macro">vec</span><span class="macro">!</span>[
(<span class="number">0.0</span>, <span class="number">0.0</span>),
(<span class="number">0.0</span>, <span class="number">0.0</span>),
(<span class="number">0.0</span>, <span class="number">0.0</span>),
(<span class="number">0.0</span>, <span class="number">0.0</span>),
(<span class="number">0.0</span>, <span class="number">0.0</span>),
(<span class="number">0.0</span>, <span class="number">0.0</span>),
(<span class="number">0.0</span>, <span class="number">0.0</span>),
(<span class="number">0.0</span>, <span class="number">0.0</span>),
(<span class="number">0.0</span>, <span class="number">0.0</span>),
(<span class="number">0.0</span>, <span class="number">0.0</span>),
(<span class="number">0.0</span>, <span class="number">0.0</span>),
(<span class="number">0.0</span>, <span class="number">0.0</span>),
(<span class="number">0.0</span>, <span class="number">0.0</span>),
(<span class="number">0.0</span>, <span class="number">0.0</span>),
(<span class="number">0.0</span>, <span class="number">0.0</span>),
(<span class="number">0.0</span>, <span class="number">0.0</span>),
(<span class="number">0.0</span>, <span class="number">0.0</span>),
(<span class="number">0.0</span>, <span class="number">0.0</span>),
(<span class="number">0.0</span>, <span class="number">0.0</span>),
(<span class="number">0.0</span>, <span class="number">0.0</span>),
(<span class="number">0.0</span>, <span class="number">0.0</span>),
(<span class="number">0.0</span>, <span class="number">0.0</span>),
(<span class="number">0.0</span>, <span class="number">0.0</span>),
(<span class="number">0.0</span>, <span class="number">0.0</span>),
],
<span class="ident">size</span>: <span class="ident">size</span>,
<span class="ident">color</span>: <span class="ident">color</span>,
<span class="ident">textured</span>: <span class="bool-val">false</span>,
<span class="ident">texture_handle</span>: <span class="prelude-val">None</span>,
}
}
}
<span class="kw">impl</span> <span class="ident">Drawable</span> <span class="kw">for</span> <span class="ident">Poly</span> {
<span class="kw">fn</span> <span class="ident">get_vertices</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Vec</span><span class="op">&lt;</span>(<span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>)<span class="op">&gt;</span> {
<span class="self">self</span>.<span class="ident">vertices</span>.<span class="ident">to_vec</span>()
}
<span class="kw">fn</span> <span class="ident">get_color</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> (<span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>) {
<span class="self">self</span>.<span class="ident">color</span>.<span class="ident">clone</span>()
}
<span class="kw">fn</span> <span class="ident">get_ti_coords</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Vec</span><span class="op">&lt;</span>(<span class="ident">f32</span>, <span class="ident">f32</span>)<span class="op">&gt;</span> {
<span class="self">self</span>.<span class="ident">ti_position</span>.<span class="ident">to_vec</span>()
}
<span class="kw">fn</span> <span class="ident">get_texture_handle</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasTextureHandle</span><span class="op">&gt;</span><span class="op">&gt;</span> {
<span class="kw">match</span> <span class="self">self</span>.<span class="ident">textured</span> {
<span class="bool-val">true</span> <span class="op">=</span><span class="op">&gt;</span> {
<span class="self">self</span>.<span class="ident">texture_handle</span>.<span class="ident">clone</span>()
}
<span class="bool-val">false</span> <span class="op">=</span><span class="op">&gt;</span> <span class="prelude-val">None</span>,
}
}
<span class="kw">fn</span> <span class="ident">get_image_handle</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasImageHandle</span><span class="op">&gt;</span><span class="op">&gt;</span> {
<span class="prelude-val">None</span>
}
}
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Text</span> {
<span class="ident">position</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>),
<span class="ident">scale</span>: <span class="ident">f32</span>,
<span class="ident">color</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>),
<span class="ident">text_handle</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasFontHandle</span><span class="op">&gt;</span>,
}
<span class="doccomment">/// Container class which implements drawable.</span>
<span class="kw">impl</span> <span class="ident">Text</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">position</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>), <span class="ident">size</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>), <span class="ident">font_handle</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasFontHandle</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Text</span> {
<span class="ident">Text</span>::<span class="ident">new_with_color</span>(<span class="ident">position</span>, <span class="ident">size</span>, <span class="number">0</span>, (<span class="number">0.</span>, <span class="number">0.</span>, <span class="number">0.</span>, <span class="number">0.</span>), <span class="ident">font_handle</span>)
}
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new_with_color</span>(<span class="ident">position</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>),
<span class="ident">size</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>),
<span class="ident">depth</span>: <span class="ident">u32</span>,
<span class="ident">color</span>: (<span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>, <span class="ident">f32</span>),
<span class="ident">handle</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasFontHandle</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Text</span> {
<span class="kw">let</span> <span class="ident">normalized_depth</span> <span class="op">=</span> (<span class="ident">depth</span> <span class="kw">as</span> <span class="ident">f32</span> <span class="op">/</span> <span class="number">255.0</span>);
<span class="ident">Text</span> {
<span class="ident">position</span>: (<span class="ident">position</span>.<span class="number">0</span>, <span class="ident">position</span>.<span class="number">1</span>, <span class="ident">normalized_depth</span>),
<span class="ident">scale</span>: <span class="number">0.0</span>,
<span class="ident">color</span>,
<span class="ident">text_handle</span>: <span class="ident">handle</span>,
}
}
}
<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">TextHandle</span> {
<span class="kw">fn</span> <span class="ident">do_nothing</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">u32</span>;
}
<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">TextInstance</span> {
<span class="kw">fn</span> <span class="ident">get_thing</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Vec</span><span class="op">&lt;</span>(<span class="ident">u32</span>, <span class="ident">u32</span>, <span class="ident">u32</span>)<span class="op">&gt;</span>;
}
<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">TextVertex</span> {
<span class="kw">fn</span> <span class="ident">get_vertices</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Vec</span><span class="op">&lt;</span>(<span class="ident">u32</span>, <span class="ident">u32</span>, <span class="ident">u32</span>)<span class="op">&gt;</span>;
}
<span class="kw">impl</span><span class="op">&lt;</span><span class="ident">V</span>: <span class="ident">TextVertex</span>, <span class="ident">H</span>, <span class="ident">In</span>: <span class="ident">TextInstance</span><span class="op">&gt;</span> <span class="ident">DrawableTest</span><span class="op">&lt;</span><span class="ident">V</span>, <span class="ident">H</span>, <span class="ident">In</span><span class="op">&gt;</span> <span class="kw">for</span> <span class="ident">Text</span> {
<span class="kw">fn</span> <span class="ident">get_vertices</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">V</span><span class="op">&gt;</span> {
<span class="macro">unimplemented</span><span class="macro">!</span>()
}
<span class="kw">fn</span> <span class="ident">get_instances</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">In</span><span class="op">&gt;</span> {
<span class="macro">unimplemented</span><span class="macro">!</span>()
}
<span class="kw">fn</span> <span class="ident">get_handle</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">H</span> {
<span class="macro">unimplemented</span><span class="macro">!</span>()
}
}</pre></div>
</pre></div>
</section><section id="search" class="content hidden"></section><section class="footer"></section><aside id="help" class="hidden"><div><h1 class="hidden">Help</h1><div class="shortcuts"><h2>Keyboard Shortcuts</h2><dl><dt><kbd>?</kbd></dt><dd>Show this help dialog</dd><dt><kbd>S</kbd></dt><dd>Focus the search field</dd><dt><kbd></kbd></dt><dd>Move up in search results</dd><dt><kbd></kbd></dt><dd>Move down in search results</dd><dt><kbd></kbd></dt><dd>Switch tab</dd><dt><kbd>&#9166;</kbd></dt><dd>Go to active search result</dd><dt><kbd>+</kbd></dt><dd>Expand all sections</dd><dt><kbd>-</kbd></dt><dd>Collapse all sections</dd></dl></div><div class="infos"><h2>Search Tricks</h2><p>Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to restrict the search to a given type.</p><p>Accepted types are: <code>fn</code>, <code>mod</code>, <code>struct</code>, <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, and <code>const</code>.</p><p>Search functions by type signature (e.g., <code>vec -> usize</code> or <code>* -> vec</code>)</p><p>Search multiple things at once by splitting your query with comma (e.g., <code>str,u8</code> or <code>String,struct:Vec,test</code>)</p></div></div></aside><script>window.rootPath = "../../";window.currentCrate = "sfml_rust";</script><script src="../../aliases.js"></script><script src="../../main.js"></script><script src="../../source-script.js"></script><script src="../../source-files.js"></script><script defer src="../../search-index.js"></script></body></html>

View File

@@ -40,7 +40,6 @@
<span id="40">40</span>
<span id="41">41</span>
<span id="42">42</span>
<span id="43">43</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="kw">use</span> <span class="ident">image</span>::<span class="ident">GenericImageView</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">sync</span>::<span class="ident">Arc</span>;
@@ -48,8 +47,7 @@
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">path</span>::<span class="ident">PathBuf</span>;
<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">timer</span>;
<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">vertex_2d</span>;
<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">vertex_3d</span>;
<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">vertex</span>;
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">load_raw</span>(<span class="ident">filename</span>: <span class="ident">String</span>) <span class="op">-</span><span class="op">&gt;</span> (<span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">u8</span><span class="op">&gt;</span>, (<span class="ident">u32</span>,<span class="ident">u32</span>)) {

View File

@@ -0,0 +1,159 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source to the Rust file `src/util/vertex.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>vertex.rs.html -- source</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc source"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../sfml_rust/index.html'><div class='logo-container'><img src='../../../rust-logo.png' alt='logo'></div></a></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form js-only"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><pre class="line-numbers"><span id="1"> 1</span>
<span id="2"> 2</span>
<span id="3"> 3</span>
<span id="4"> 4</span>
<span id="5"> 5</span>
<span id="6"> 6</span>
<span id="7"> 7</span>
<span id="8"> 8</span>
<span id="9"> 9</span>
<span id="10">10</span>
<span id="11">11</span>
<span id="12">12</span>
<span id="13">13</span>
<span id="14">14</span>
<span id="15">15</span>
<span id="16">16</span>
<span id="17">17</span>
<span id="18">18</span>
<span id="19">19</span>
<span id="20">20</span>
<span id="21">21</span>
<span id="22">22</span>
<span id="23">23</span>
<span id="24">24</span>
<span id="25">25</span>
<span id="26">26</span>
<span id="27">27</span>
<span id="28">28</span>
<span id="29">29</span>
<span id="30">30</span>
<span id="31">31</span>
<span id="32">32</span>
<span id="33">33</span>
<span id="34">34</span>
<span id="35">35</span>
<span id="36">36</span>
<span id="37">37</span>
<span id="38">38</span>
<span id="39">39</span>
<span id="40">40</span>
<span id="41">41</span>
<span id="42">42</span>
<span id="43">43</span>
<span id="44">44</span>
<span id="45">45</span>
<span id="46">46</span>
<span id="47">47</span>
<span id="48">48</span>
<span id="49">49</span>
<span id="50">50</span>
<span id="51">51</span>
<span id="52">52</span>
<span id="53">53</span>
<span id="54">54</span>
<span id="55">55</span>
<span id="56">56</span>
<span id="57">57</span>
<span id="58">58</span>
<span id="59">59</span>
<span id="60">60</span>
<span id="61">61</span>
<span id="62">62</span>
<span id="63">63</span>
<span id="64">64</span>
<span id="65">65</span>
<span id="66">66</span>
<span id="67">67</span>
<span id="68">68</span>
<span id="69">69</span>
<span id="70">70</span>
<span id="71">71</span>
<span id="72">72</span>
<span id="73">73</span>
<span id="74">74</span>
<span id="75">75</span>
<span id="76">76</span>
<span id="77">77</span>
<span id="78">78</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">handles</span>::{<span class="ident">CanvasTextureHandle</span>, <span class="ident">CanvasImageHandle</span>, <span class="ident">CanvasFontHandle</span>};
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">sync</span>::<span class="ident">Arc</span>;
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">buffer</span>::<span class="ident">BufferAccess</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">collections</span>::<span class="ident">HashMap</span>;
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Default</span>, <span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">TextureVertex2D</span> {
<span class="kw">pub</span> <span class="ident">v_position</span>: [<span class="ident">f32</span>; <span class="number">2</span>],
<span class="kw">pub</span> <span class="ident">ti_position</span>: [<span class="ident">f32</span>; <span class="number">2</span>],
}
<span class="ident">vulkano</span>::<span class="macro">impl_vertex</span><span class="macro">!</span>(<span class="ident">TextureVertex2D</span>, <span class="ident">v_position</span>, <span class="ident">ti_position</span>);
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Default</span>, <span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">ColorVertex2D</span> {
<span class="kw">pub</span> <span class="ident">v_position</span>: [<span class="ident">f32</span>; <span class="number">2</span>],
<span class="kw">pub</span> <span class="ident">color</span>: [<span class="ident">f32</span>; <span class="number">4</span>],
}
<span class="ident">vulkano</span>::<span class="macro">impl_vertex</span><span class="macro">!</span>(<span class="ident">ColorVertex2D</span>, <span class="ident">v_position</span>, <span class="ident">color</span>);
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Default</span>, <span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">ImageVertex2D</span> {
<span class="kw">pub</span> <span class="ident">v_position</span>: [<span class="ident">f32</span>; <span class="number">2</span>],
<span class="kw">pub</span> <span class="ident">color</span>: [<span class="ident">f32</span>; <span class="number">4</span>],
}
<span class="ident">vulkano</span>::<span class="macro">impl_vertex</span><span class="macro">!</span>(<span class="ident">ImageVertex2D</span>, <span class="ident">v_position</span>, <span class="ident">color</span>);
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Default</span>, <span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Vertex3D</span> {
<span class="kw">pub</span> <span class="ident">v_position</span>: [<span class="ident">f32</span>; <span class="number">3</span>],
<span class="kw">pub</span> <span class="ident">color</span> : [<span class="ident">f32</span>; <span class="number">4</span>],
<span class="kw">pub</span> <span class="ident">ti_position</span>: [<span class="ident">f32</span>; <span class="number">2</span>],
}
<span class="ident">vulkano</span>::<span class="macro">impl_vertex</span><span class="macro">!</span>(<span class="ident">Vertex3D</span>, <span class="ident">v_position</span>, <span class="ident">color</span>, <span class="ident">ti_position</span>);
<span class="doccomment">/// Text vertex 3d with vertex position</span>
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Default</span>, <span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">TextVertex3D</span> {
<span class="kw">pub</span> <span class="ident">position</span>: [<span class="ident">f32</span>; <span class="number">3</span>],
}
<span class="ident">vulkano</span>::<span class="macro">impl_vertex</span><span class="macro">!</span>(<span class="ident">TextVertex3D</span>, <span class="ident">position</span>);
<span class="comment">// ==============================================================================</span>
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>, <span class="ident">Clone</span>)]</span>
<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">VertexTypes</span> {
<span class="ident">TextureType</span>(<span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">TextureVertex2D</span><span class="op">&gt;</span>, <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasTextureHandle</span><span class="op">&gt;</span>),
<span class="ident">ImageType</span>(<span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">ImageVertex2D</span><span class="op">&gt;</span>, <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasImageHandle</span><span class="op">&gt;</span>),
<span class="ident">ColorType</span>(<span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">ColorVertex2D</span><span class="op">&gt;</span>),
<span class="ident">ThreeDType</span>(<span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Vertex3D</span><span class="op">&gt;</span>),
}
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">CanvasFrameAllocation</span> {
<span class="kw">pub</span> <span class="ident">colored_vertex_buffer</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span>(<span class="kw">dyn</span> <span class="ident">BufferAccess</span> <span class="op">+</span> <span class="ident">Send</span> <span class="op">+</span> <span class="ident">Sync</span>)<span class="op">&gt;</span><span class="op">&gt;</span>,
<span class="kw">pub</span> <span class="ident">textured_vertex_buffer</span>: <span class="ident">HashMap</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasTextureHandle</span><span class="op">&gt;</span>, <span class="ident">Arc</span><span class="op">&lt;</span>(<span class="kw">dyn</span> <span class="ident">BufferAccess</span> <span class="op">+</span> <span class="ident">Send</span> <span class="op">+</span> <span class="ident">Sync</span>)<span class="op">&gt;</span><span class="op">&gt;</span>,
<span class="kw">pub</span> <span class="ident">image_vertex_buffer</span>: <span class="ident">HashMap</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasImageHandle</span><span class="op">&gt;</span>, <span class="ident">Arc</span><span class="op">&lt;</span>(<span class="kw">dyn</span> <span class="ident">BufferAccess</span> <span class="op">+</span> <span class="ident">Send</span> <span class="op">+</span> <span class="ident">Sync</span>)<span class="op">&gt;</span><span class="op">&gt;</span>,
<span class="kw">pub</span> <span class="ident">text_instances</span>: <span class="ident">HashMap</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CanvasFontHandle</span><span class="op">&gt;</span>, <span class="ident">Arc</span><span class="op">&lt;</span>(<span class="kw">dyn</span> <span class="ident">BufferAccess</span> <span class="op">+</span> <span class="ident">Send</span> <span class="op">+</span> <span class="ident">Sync</span>)<span class="op">&gt;</span><span class="op">&gt;</span>,
}
</pre></div>
</section><section id="search" class="content hidden"></section><section class="footer"></section><aside id="help" class="hidden"><div><h1 class="hidden">Help</h1><div class="shortcuts"><h2>Keyboard Shortcuts</h2><dl><dt><kbd>?</kbd></dt><dd>Show this help dialog</dd><dt><kbd>S</kbd></dt><dd>Focus the search field</dd><dt><kbd></kbd></dt><dd>Move up in search results</dd><dt><kbd></kbd></dt><dd>Move down in search results</dd><dt><kbd></kbd></dt><dd>Switch tab</dd><dt><kbd>&#9166;</kbd></dt><dd>Go to active search result</dd><dt><kbd>+</kbd></dt><dd>Expand all sections</dd><dt><kbd>-</kbd></dt><dd>Collapse all sections</dd></dl></div><div class="infos"><h2>Search Tricks</h2><p>Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to restrict the search to a given type.</p><p>Accepted types are: <code>fn</code>, <code>mod</code>, <code>struct</code>, <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, and <code>const</code>.</p><p>Search functions by type signature (e.g., <code>vec -> usize</code> or <code>* -> vec</code>)</p><p>Search multiple things at once by splitting your query with comma (e.g., <code>str,u8</code> or <code>String,struct:Vec,test</code>)</p></div></div></aside><script>window.rootPath = "../../../";window.currentCrate = "sfml_rust";</script><script src="../../../aliases.js"></script><script src="../../../main.js"></script><script src="../../../source-script.js"></script><script src="../../../source-files.js"></script><script defer src="../../../search-index.js"></script></body></html>

View File

@@ -1,22 +0,0 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source to the Rust file `src/util/vertex_2d.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>vertex_2d.rs.html -- source</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc source"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../sfml_rust/index.html'><div class='logo-container'><img src='../../../rust-logo.png' alt='logo'></div></a></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form js-only"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><pre class="line-numbers"><span id="1"> 1</span>
<span id="2"> 2</span>
<span id="3"> 3</span>
<span id="4"> 4</span>
<span id="5"> 5</span>
<span id="6"> 6</span>
<span id="7"> 7</span>
<span id="8"> 8</span>
<span id="9"> 9</span>
<span id="10">10</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="doccomment">/// Generic vertex 2d with vertex position, texture position and a 32bit color</span>
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Default</span>, <span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Vertex2D</span> {
<span class="kw">pub</span> <span class="ident">v_position</span>: [<span class="ident">f32</span>; <span class="number">2</span>],
<span class="kw">pub</span> <span class="ident">color</span> : [<span class="ident">f32</span>; <span class="number">4</span>],
<span class="kw">pub</span> <span class="ident">ti_position</span>: [<span class="ident">f32</span>; <span class="number">2</span>],
}
<span class="ident">vulkano</span>::<span class="macro">impl_vertex</span><span class="macro">!</span>(<span class="ident">Vertex2D</span>, <span class="ident">v_position</span>, <span class="ident">color</span>, <span class="ident">ti_position</span>);</pre></div>
</section><section id="search" class="content hidden"></section><section class="footer"></section><aside id="help" class="hidden"><div><h1 class="hidden">Help</h1><div class="shortcuts"><h2>Keyboard Shortcuts</h2><dl><dt><kbd>?</kbd></dt><dd>Show this help dialog</dd><dt><kbd>S</kbd></dt><dd>Focus the search field</dd><dt><kbd></kbd></dt><dd>Move up in search results</dd><dt><kbd></kbd></dt><dd>Move down in search results</dd><dt><kbd></kbd></dt><dd>Switch tab</dd><dt><kbd>&#9166;</kbd></dt><dd>Go to active search result</dd><dt><kbd>+</kbd></dt><dd>Expand all sections</dd><dt><kbd>-</kbd></dt><dd>Collapse all sections</dd></dl></div><div class="infos"><h2>Search Tricks</h2><p>Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to restrict the search to a given type.</p><p>Accepted types are: <code>fn</code>, <code>mod</code>, <code>struct</code>, <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, and <code>const</code>.</p><p>Search functions by type signature (e.g., <code>vec -> usize</code> or <code>* -> vec</code>)</p><p>Search multiple things at once by splitting your query with comma (e.g., <code>str,u8</code> or <code>String,struct:Vec,test</code>)</p></div></div></aside><script>window.rootPath = "../../../";window.currentCrate = "sfml_rust";</script><script src="../../../aliases.js"></script><script src="../../../main.js"></script><script src="../../../source-script.js"></script><script src="../../../source-files.js"></script><script defer src="../../../search-index.js"></script></body></html>

View File

@@ -1,43 +0,0 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source to the Rust file `src/util/vertex_3d.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>vertex_3d.rs.html -- source</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc source"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../sfml_rust/index.html'><div class='logo-container'><img src='../../../rust-logo.png' alt='logo'></div></a></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form js-only"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><pre class="line-numbers"><span id="1"> 1</span>
<span id="2"> 2</span>
<span id="3"> 3</span>
<span id="4"> 4</span>
<span id="5"> 5</span>
<span id="6"> 6</span>
<span id="7"> 7</span>
<span id="8"> 8</span>
<span id="9"> 9</span>
<span id="10">10</span>
<span id="11">11</span>
<span id="12">12</span>
<span id="13">13</span>
<span id="14">14</span>
<span id="15">15</span>
<span id="16">16</span>
<span id="17">17</span>
<span id="18">18</span>
<span id="19">19</span>
<span id="20">20</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="doccomment">/// Generic vertex 3d with vertex position, texture position and a 32bit color</span>
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Default</span>, <span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Vertex3D</span> {
<span class="kw">pub</span> <span class="ident">v_position</span>: [<span class="ident">f32</span>; <span class="number">3</span>],
<span class="kw">pub</span> <span class="ident">color</span> : [<span class="ident">f32</span>; <span class="number">4</span>],
<span class="kw">pub</span> <span class="ident">ti_position</span>: [<span class="ident">f32</span>; <span class="number">2</span>],
}
<span class="ident">vulkano</span>::<span class="macro">impl_vertex</span><span class="macro">!</span>(<span class="ident">Vertex3D</span>, <span class="ident">v_position</span>, <span class="ident">color</span>, <span class="ident">ti_position</span>);
<span class="doccomment">/// Text vertex 3d with vertex position</span>
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Default</span>, <span class="ident">Debug</span>, <span class="ident">Clone</span>, <span class="ident">Copy</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">TextVertex3D</span> {
<span class="kw">pub</span> <span class="ident">position</span>: [<span class="ident">f32</span>; <span class="number">3</span>],
}
<span class="ident">vulkano</span>::<span class="macro">impl_vertex</span><span class="macro">!</span>(<span class="ident">TextVertex3D</span>, <span class="ident">position</span>);
</pre></div>
</section><section id="search" class="content hidden"></section><section class="footer"></section><aside id="help" class="hidden"><div><h1 class="hidden">Help</h1><div class="shortcuts"><h2>Keyboard Shortcuts</h2><dl><dt><kbd>?</kbd></dt><dd>Show this help dialog</dd><dt><kbd>S</kbd></dt><dd>Focus the search field</dd><dt><kbd></kbd></dt><dd>Move up in search results</dd><dt><kbd></kbd></dt><dd>Move down in search results</dd><dt><kbd></kbd></dt><dd>Switch tab</dd><dt><kbd>&#9166;</kbd></dt><dd>Go to active search result</dd><dt><kbd>+</kbd></dt><dd>Expand all sections</dd><dt><kbd>-</kbd></dt><dd>Collapse all sections</dd></dl></div><div class="infos"><h2>Search Tricks</h2><p>Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to restrict the search to a given type.</p><p>Accepted types are: <code>fn</code>, <code>mod</code>, <code>struct</code>, <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, and <code>const</code>.</p><p>Search functions by type signature (e.g., <code>vec -> usize</code> or <code>* -> vec</code>)</p><p>Search multiple things at once by splitting your query with comma (e.g., <code>str,u8</code> or <code>String,struct:Vec,test</code>)</p></div></div></aside><script>window.rootPath = "../../../";window.currentCrate = "sfml_rust";</script><script src="../../../aliases.js"></script><script src="../../../main.js"></script><script src="../../../source-script.js"></script><script src="../../../source-files.js"></script><script defer src="../../../search-index.js"></script></body></html>

View File

@@ -335,6 +335,9 @@
<span id="335">335</span>
<span id="336">336</span>
<span id="337">337</span>
<span id="338">338</span>
<span id="339">339</span>
<span id="340">340</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">command_buffer</span>::{<span class="ident">AutoCommandBufferBuilder</span>, <span class="ident">DynamicState</span>};
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">device</span>::{<span class="ident">Device</span>, <span class="ident">DeviceExtensions</span>, <span class="ident">QueuesIter</span>, <span class="ident">Queue</span>};
@@ -349,16 +352,16 @@
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">compute</span>::<span class="ident">compu_state</span>::<span class="ident">CompuState</span>;
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">image</span>::<span class="ident">ImageUsage</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">compute</span>::<span class="ident">compu_frame</span>::<span class="ident">CompuFrame</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">canvas_frame</span>::<span class="ident">CanvasFrame</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">canvas_frame</span>::{<span class="ident">CanvasFrameTest</span>};
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">time</span>::<span class="ident">Duration</span>;
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">pipeline</span>::<span class="ident">depth_stencil</span>::{<span class="ident">DynamicStencilValue</span>, <span class="ident">StencilFaceFlags</span>};
<span class="kw">use</span> <span class="ident">vulkano</span>::<span class="ident">pipeline</span>::<span class="ident">vertex</span>::{<span class="ident">OneVertexOneInstanceDefinition</span>, <span class="ident">SingleBufferDefinition</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">util</span>::<span class="ident">vertex_3d</span>::<span class="ident">Vertex3D</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">canvas_state</span>::<span class="ident">CanvasState</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">shader</span>::<span class="ident">generic_shader</span>::<span class="ident">GenericShader</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">shader</span>::<span class="ident">text_shader</span>::<span class="ident">TextShader</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">handles</span>::{<span class="ident">CanvasTextureHandle</span>, <span class="ident">CompiledGraphicsPipelineHandle</span>, <span class="ident">CanvasFontHandle</span>, <span class="ident">CanvasImageHandle</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">canvas</span>::<span class="ident">managed</span>::<span class="ident">handles</span>::{<span class="ident">CanvasTextureHandle</span>, <span class="ident">CompiledShaderHandle</span>, <span class="ident">CanvasFontHandle</span>, <span class="ident">CanvasImageHandle</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">compute</span>::<span class="ident">managed</span>::<span class="ident">handles</span>::{<span class="ident">CompuKernelHandle</span>, <span class="ident">CompuBufferHandle</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">util</span>::<span class="ident">vertex</span>::<span class="ident">VertexTypes</span>;
<span class="doccomment">/// VKProcessor holds the vulkan instance information, the swapchain,</span>
@@ -528,7 +531,7 @@
}
<span class="doccomment">/// O(n) Lookup for the matching shader string</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_shader_handle</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">shader_name</span>: <span class="ident">String</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledGraphicsPipelineHandle</span><span class="op">&gt;</span><span class="op">&gt;</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_shader_handle</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">shader_name</span>: <span class="ident">String</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CompiledShaderHandle</span><span class="op">&gt;</span><span class="op">&gt;</span> {
<span class="self">self</span>.<span class="ident">canvas_state</span>.<span class="ident">get_shader_handle</span>(<span class="ident">shader_name</span>)
}
@@ -563,7 +566,8 @@
<span class="doccomment">///</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">run</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>,
<span class="ident">surface</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">Surface</span><span class="op">&lt;</span><span class="ident">Window</span><span class="op">&gt;</span><span class="op">&gt;</span>,
<span class="ident">canvas_frame</span>: <span class="ident">CanvasFrame</span>,
<span class="comment">//canvas_frame: CanvasFrame,</span>
<span class="ident">canvas_frame</span>: <span class="ident">CanvasFrameTest</span>,
<span class="ident">compute_frame</span>: <span class="ident">CompuFrame</span>,
) {
@@ -602,12 +606,12 @@
<span class="ident">drop</span>(<span class="ident">g</span>);
{
<span class="kw">let</span> <span class="ident">g</span> <span class="op">=</span> <span class="ident">hprof</span>::<span class="ident">enter</span>(<span class="string">&quot;Canvas creates GPU buffers&quot;</span>);
<span class="kw">let</span> <span class="ident">allocated_buffers</span> <span class="op">=</span> {
<span class="comment">// take the canvas frame and create the vertex buffers</span>
<span class="comment">// TODO: This performs gpu buffer creation. Shouldn&#39;t be in hotpath??</span>
<span class="self">self</span>.<span class="ident">canvas_state</span>.<span class="ident">draw</span>(<span class="ident">canvas_frame</span>);
}
<span class="kw">let</span> <span class="ident">g</span> <span class="op">=</span> <span class="ident">hprof</span>::<span class="ident">enter</span>(<span class="string">&quot;Canvas creates GPU buffers&quot;</span>);
<span class="self">self</span>.<span class="ident">canvas_state</span>.<span class="ident">allocate</span>(<span class="ident">canvas_frame</span>)
};
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">command_buffer</span> <span class="op">=</span>
<span class="ident">AutoCommandBufferBuilder</span>::<span class="ident">primary_one_time_submit</span>(<span class="self">self</span>.<span class="ident">device</span>.<span class="ident">clone</span>(), <span class="self">self</span>.<span class="ident">queue</span>.<span class="ident">family</span>()).<span class="ident">unwrap</span>();
@@ -620,7 +624,9 @@
<span class="kw">let</span> <span class="ident">g</span> <span class="op">=</span> <span class="ident">hprof</span>::<span class="ident">enter</span>(<span class="string">&quot;Push draw commands to command buffer&quot;</span>);
<span class="comment">// Add the draw commands</span>
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">command_buffer</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">canvas_state</span>.<span class="ident">draw_commands</span>(<span class="ident">command_buffer</span>, <span class="ident">framebuffers</span>, <span class="ident">image_num</span>);
<span class="comment">//let mut command_buffer = self.canvas_state.draw_commands(command_buffer, framebuffers, image_num);</span>
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">command_buffer</span> <span class="op">=</span>
<span class="self">self</span>.<span class="ident">canvas_state</span>.<span class="ident">draw_commands</span>(<span class="ident">command_buffer</span>, <span class="ident">framebuffers</span>, <span class="ident">image_num</span>, <span class="ident">allocated_buffers</span>);
<span class="comment">// And build</span>
<span class="kw">let</span> <span class="ident">command_buffer</span> <span class="op">=</span> <span class="ident">command_buffer</span>.<span class="ident">build</span>().<span class="ident">unwrap</span>();