<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Shader for bitmap not working</title>
		<link>http://www.allegro.cc/forums/view/610847</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 17 Aug 2012 23:33:54 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m using the shader addon and loaded a default shader pair. That works fine. Now I want to apply a shader pair to a bitmap.</p><p>After the default pair is loaded and d3d effect is set, I load this shader:</p><p>px
</p><div class="source-code snippet"><div class="inner"><pre>   texture tex<span class="k2">;</span>
   sampler2D s <span class="k3">=</span> sampler_state <span class="k2">{</span>
      texture <span class="k3">=</span> <span class="k3">&lt;</span>tex&gt;<span class="k2">;</span>
   <span class="k2">}</span><span class="k2">;</span>

   float4 ps_main<span class="k2">(</span>VS_OUTPUT Input<span class="k2">)</span> <span class="k2">:</span> COLOR0
   <span class="k2">{</span>
     <span class="k1">return</span> float4<span class="k2">(</span><span class="n">1</span>.<span class="n">0</span>,<span class="n">1</span>.<span class="n">0</span>,<span class="n">1</span>.<span class="n">0</span>,<span class="n">1</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
   <span class="k2">}</span>
</pre></div></div><p>

vtx
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span>    <span class="k1">struct</span> VS_INPUT
<span class="number">  2</span>   <span class="k2">{</span>
<span class="number">  3</span>      float4 Position  <span class="k2">:</span> POSITION0<span class="k2">;</span>
<span class="number">  4</span>      float2 TexCoord  <span class="k2">:</span> TEXCOORD0<span class="k2">;</span>
<span class="number">  5</span>      float4 Color     <span class="k2">:</span> TEXCOORD1<span class="k2">;</span>
<span class="number">  6</span>   <span class="k2">}</span><span class="k2">;</span>
<span class="number">  7</span>   <span class="k1">struct</span> VS_OUTPUT
<span class="number">  8</span>   <span class="k2">{</span>
<span class="number">  9</span>      float4 Position  <span class="k2">:</span> POSITION0<span class="k2">;</span>
<span class="number"> 10</span>      float4 Color     <span class="k2">:</span> COLOR0<span class="k2">;</span>
<span class="number"> 11</span>      float2 TexCoord  <span class="k2">:</span> TEXCOORD0<span class="k2">;</span>
<span class="number"> 12</span>   <span class="k2">}</span><span class="k2">;</span>
<span class="number"> 13</span>   
<span class="number"> 14</span>   float4x4 projview_matrix<span class="k2">;</span>
<span class="number"> 15</span>   
<span class="number"> 16</span>   VS_OUTPUT vs_main<span class="k2">(</span>VS_INPUT Input<span class="k2">)</span>
<span class="number"> 17</span>   <span class="k2">{</span>
<span class="number"> 18</span>      VS_OUTPUT Output<span class="k2">;</span>
<span class="number"> 19</span>      Output.Position <span class="k3">=</span> mul<span class="k2">(</span>Input.Position, projview_matrix<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>      Output.Color <span class="k3">=</span> Input.Color<span class="k2">;</span>
<span class="number"> 21</span>      Output.TexCoord <span class="k3">=</span> Input.TexCoord<span class="k2">;</span>
<span class="number"> 22</span>      <span class="k1">return</span> Output<span class="k2">;</span>
<span class="number"> 23</span>   <span class="k2">}</span>
</div></div><p>

Then when I come to render:
</p><div class="source-code snippet"><div class="inner"><pre>      m_shader.setSampler<span class="k2">(</span>m_table,<span class="s">"tex"</span><span class="k2">)</span><span class="k2">;</span>
      m_shader.use<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
      g-&gt;drawScaledSprite<span class="k2">(</span>m_table,<span class="n">0</span>,<span class="n">0</span>,
        m_table-&gt;getWidth<span class="k2">(</span><span class="k2">)</span>,m_table-&gt;getHeight<span class="k2">(</span><span class="k2">)</span>,
        x,
        y,
        desiredW,desiredW,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
      m_shader.stop<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

However it still renders it with the default shader pair. The table should be white.</p><p>The shader compiles fine. What could be wrong? </p><p>Thanks
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (jmasterx)</author>
		<pubDate>Fri, 17 Aug 2012 06:43:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Can you post a test case? I still find these things tricky to deal with so I&#39;d have to play around with it a bit to see why it&#39;s not working.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Trent Gamblin)</author>
		<pubDate>Fri, 17 Aug 2012 06:54:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>This demonstrates it:
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span><span class="p">#include "allegro5/allegro5.h"</span>
<span class="number">   2</span><span class="p">#include "allegro5/allegro_shader.h"</span>
<span class="number">   3</span><span class="p">#include "allegro5/allegro_image.h"</span>
<span class="number">   4</span><span class="p">#include "allegro5/allegro_primitives.h"</span>
<span class="number">   5</span><span class="p">#include &lt;cstdio&gt;</span>
<span class="number">   6</span>
<span class="number">   7</span><span class="c">// FIXME: supported drivers should go in alplatf.h</span>
<span class="number">   8</span><span class="c">// Uncomment one of these three blocks depending what driver you want</span>
<span class="number">   9</span>
<span class="number">  10</span><span class="p">#define HLSL</span>
<span class="number">  11</span><span class="p">#include "allegro5/allegro_direct3d.h"</span>
<span class="number">  12</span><span class="p">#include "allegro5/allegro_shader_hlsl.h"</span>
<span class="number">  13</span>
<span class="number">  14</span><span class="c">//#define GLSL</span>
<span class="number">  15</span><span class="c">//#include "allegro5/allegro_opengl.h"</span>
<span class="number">  16</span><span class="c">//#include "allegro5/allegro_shader_glsl.h"</span>
<span class="number">  17</span>
<span class="number">  18</span><span class="c">/*</span>
<span class="number">  19</span><span class="c">#define CG</span>
<span class="number">  20</span><span class="c">#include &lt;Cg/cg.h&gt;</span>
<span class="number">  21</span><span class="c">*/</span>
<span class="number">  22</span>
<span class="number">  23</span><span class="p">#ifdef HLSL</span>
<span class="number">  24</span><span class="p">#define TOP 0</span>
<span class="number">  25</span><span class="p">#define BOT 1</span>
<span class="number">  26</span><span class="p">#define vsource_name hlsl_vertex_source</span>
<span class="number">  27</span><span class="p">#define psource_name hlsl_pixel_source</span>
<span class="number">  28</span><span class="p">#define PLATFORM ALLEGRO_SHADER_HLSL</span>
<span class="number">  29</span><span class="p">#elif defined GLSL</span>
<span class="number">  30</span><span class="p">#define TOP 1</span>
<span class="number">  31</span><span class="p">#define BOT 0</span>
<span class="number">  32</span><span class="p">#define vsource_name glsl_vertex_source</span>
<span class="number">  33</span><span class="p">#define psource_name glsl_pixel_source</span>
<span class="number">  34</span><span class="p">#define PLATFORM ALLEGRO_SHADER_GLSL</span>
<span class="number">  35</span><span class="p">#else</span>
<span class="number">  36</span><span class="p">#define TOP 1</span>
<span class="number">  37</span><span class="p">#define BOT 0</span>
<span class="number">  38</span><span class="p">#define vsource_name cg_vertex_source</span>
<span class="number">  39</span><span class="p">#define psource_name cg_pixel_source</span>
<span class="number">  40</span><span class="p">#define PLATFORM ALLEGRO_SHADER_CG</span>
<span class="number">  41</span><span class="p">#endif</span>
<span class="number">  42</span>
<span class="number">  43</span><span class="p">#ifdef GLSL</span>
<span class="number">  44</span><span class="p">#define EX_SHADER_FLAGS ALLEGRO_OPENGL</span>
<span class="number">  45</span><span class="p">#else</span>
<span class="number">  46</span><span class="p">#define EX_SHADER_FLAGS 0</span>
<span class="number">  47</span><span class="p">#endif</span>
<span class="number">  48</span>
<span class="number">  49</span><span class="p">#ifdef CG  </span>
<span class="number">  50</span><span class="k1">static</span> <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>cg_vertex_source <span class="k3">=</span>
<span class="number">  51</span><span class="s">"uniform float4x4 projview_matrix;\n"</span>
<span class="number">  52</span><span class="s">"void vs_main(\n"</span>
<span class="number">  53</span><span class="s">"  in float3 pos        : POSITION,\n"</span>
<span class="number">  54</span><span class="s">"  in float4 color      : COLOR0,\n"</span>
<span class="number">  55</span><span class="s">"  in float2 texcoord   : TEXCOORD0,\n"</span>
<span class="number">  56</span><span class="s">"  out float4 posO      : POSITION,\n"</span>
<span class="number">  57</span><span class="s">"  out float4 colorO    : COLOR0,\n"</span>
<span class="number">  58</span><span class="s">"  out float2 texcoordO : TEXCOORD0)\n"</span>
<span class="number">  59</span><span class="s">"{\n"</span>
<span class="number">  60</span><span class="s">"  posO = mul(float4(pos, 1.0), projview_matrix);\n"</span>
<span class="number">  61</span><span class="s">"  colorO = color;\n"</span>
<span class="number">  62</span><span class="s">"  texcoordO = texcoord;\n"</span>
<span class="number">  63</span><span class="s">"}\n"</span><span class="k2">;</span>
<span class="number">  64</span>
<span class="number">  65</span><span class="k1">static</span> <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>cg_pixel_source <span class="k3">=</span>
<span class="number">  66</span><span class="s">"uniform sampler2D tex;\n"</span>
<span class="number">  67</span><span class="s">"uniform float3 tint;\n"</span>
<span class="number">  68</span><span class="s">"void ps_main(\n"</span>
<span class="number">  69</span><span class="s">"  in float4 color    : COLOR0,\n"</span>
<span class="number">  70</span><span class="s">"  in float2 texcoord : TEXCOORD0,\n"</span>
<span class="number">  71</span><span class="s">"  out float4 colorO  : COLOR0)\n"</span>
<span class="number">  72</span><span class="s">"{\n"</span>
<span class="number">  73</span><span class="s">"  colorO = color * tex2D(tex, texcoord);\n"</span>
<span class="number">  74</span><span class="s">"  colorO.r *= tint.r;\n"</span>
<span class="number">  75</span><span class="s">"  colorO.g *= tint.g;\n"</span>
<span class="number">  76</span><span class="s">"  colorO.b *= tint.b;\n"</span>
<span class="number">  77</span><span class="s">"}\n"</span><span class="k2">;</span>
<span class="number">  78</span><span class="p">#endif</span>
<span class="number">  79</span>
<span class="number">  80</span><span class="p">#ifdef HLSL</span>
<span class="number">  81</span><span class="k1">static</span> <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>hlsl_vertex_source <span class="k3">=</span>
<span class="number">  82</span><span class="s">"struct VS_INPUT\n"</span>
<span class="number">  83</span><span class="s">"{\n"</span>
<span class="number">  84</span><span class="s">"   float4 Position  : POSITION0;\n"</span>
<span class="number">  85</span><span class="s">"   float2 TexCoord  : TEXCOORD0;\n"</span>
<span class="number">  86</span><span class="s">"   float4 Color     : TEXCOORD1;\n"</span>
<span class="number">  87</span><span class="s">"};\n"</span>
<span class="number">  88</span><span class="s">"struct VS_OUTPUT\n"</span>
<span class="number">  89</span><span class="s">"{\n"</span>
<span class="number">  90</span><span class="s">"   float4 Position  : POSITION0;\n"</span>
<span class="number">  91</span><span class="s">"   float4 Color     : COLOR0;\n"</span>
<span class="number">  92</span><span class="s">"   float2 TexCoord  : TEXCOORD0;\n"</span>
<span class="number">  93</span><span class="s">"};\n"</span>
<span class="number">  94</span><span class="s">"\n"</span>
<span class="number">  95</span><span class="s">"float4x4 projview_matrix;\n"</span>
<span class="number">  96</span><span class="s">"\n"</span>
<span class="number">  97</span><span class="s">"VS_OUTPUT vs_main(VS_INPUT Input)\n"</span>
<span class="number">  98</span><span class="s">"{\n"</span>
<span class="number">  99</span><span class="s">"   VS_OUTPUT Output;\n"</span>
<span class="number"> 100</span><span class="s">"   Output.Position = mul(Input.Position, projview_matrix);\n"</span>
<span class="number"> 101</span><span class="s">"   Output.Color = Input.Color;\n"</span>
<span class="number"> 102</span><span class="s">"   Output.TexCoord = Input.TexCoord;\n"</span>
<span class="number"> 103</span><span class="s">"   return Output;\n"</span>
<span class="number"> 104</span><span class="s">"}\n"</span><span class="k2">;</span>
<span class="number"> 105</span>
<span class="number"> 106</span><span class="k1">static</span> <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>hlsl_pixel_source <span class="k3">=</span>
<span class="number"> 107</span><span class="s">"texture tex;\n"</span>
<span class="number"> 108</span><span class="s">"sampler2D s = sampler_state {\n"</span>
<span class="number"> 109</span><span class="s">"   texture = &lt;tex&gt;;\n"</span>
<span class="number"> 110</span><span class="s">"};\n"</span>
<span class="number"> 111</span><span class="s">"float3 tint;\n"</span>
<span class="number"> 112</span><span class="s">"float4 ps_main(VS_OUTPUT Input) : COLOR0\n"</span>
<span class="number"> 113</span><span class="s">"{\n"</span>
<span class="number"> 114</span><span class="s">"   float4 pixel = tex2D(s, Input.TexCoord.xy);\n"</span>
<span class="number"> 115</span><span class="s">"   pixel.r *= tint.r;\n"</span>
<span class="number"> 116</span><span class="s">"   pixel.g *= tint.g;\n"</span>
<span class="number"> 117</span><span class="s">"   pixel.b *= tint.b;\n"</span>
<span class="number"> 118</span><span class="s">"   return pixel;\n"</span>
<span class="number"> 119</span><span class="s">"}\n"</span><span class="k2">;</span>
<span class="number"> 120</span><span class="p">#endif</span>
<span class="number"> 121</span>
<span class="number"> 122</span><span class="p">#ifdef GLSL</span>
<span class="number"> 123</span><span class="k1">static</span> <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>glsl_vertex_source <span class="k3">=</span>
<span class="number"> 124</span><span class="s">"attribute vec4 pos;\n"</span>
<span class="number"> 125</span><span class="s">"attribute vec4 color;\n"</span>
<span class="number"> 126</span><span class="s">"attribute vec2 texcoord;\n"</span>
<span class="number"> 127</span><span class="s">"uniform mat4 projview_matrix;\n"</span>
<span class="number"> 128</span><span class="s">"varying vec4 varying_color;\n"</span>
<span class="number"> 129</span><span class="s">"varying vec2 varying_texcoord;\n"</span>
<span class="number"> 130</span><span class="s">"void main()\n"</span>
<span class="number"> 131</span><span class="s">"{\n"</span>
<span class="number"> 132</span><span class="s">"  varying_color = color;\n"</span>
<span class="number"> 133</span><span class="s">"  varying_texcoord = texcoord;\n"</span>
<span class="number"> 134</span><span class="s">"  gl_Position = projview_matrix * pos;\n"</span>
<span class="number"> 135</span><span class="s">"}\n"</span><span class="k2">;</span>
<span class="number"> 136</span>
<span class="number"> 137</span><span class="k1">static</span> <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>glsl_pixel_source <span class="k3">=</span>
<span class="number"> 138</span><span class="s">"uniform sampler2D tex;\n"</span>
<span class="number"> 139</span><span class="s">"uniform vec3 tint;\n"</span>
<span class="number"> 140</span><span class="s">"varying vec4 varying_color;\n"</span>
<span class="number"> 141</span><span class="s">"varying vec2 varying_texcoord;\n"</span>
<span class="number"> 142</span><span class="s">"void main()\n"</span>
<span class="number"> 143</span><span class="s">"{\n"</span>
<span class="number"> 144</span><span class="s">"  vec4 tmp = varying_color * texture2D(tex, varying_texcoord);\n"</span>
<span class="number"> 145</span><span class="s">"  tmp.r *= tint.r;\n"</span>
<span class="number"> 146</span><span class="s">"  tmp.g *= tint.g;\n"</span>
<span class="number"> 147</span><span class="s">"  tmp.b *= tint.b;\n"</span>
<span class="number"> 148</span><span class="s">"  gl_FragColor = tmp;\n"</span>
<span class="number"> 149</span><span class="s">"}\n"</span><span class="k2">;</span>
<span class="number"> 150</span><span class="p">#endif</span>
<span class="number"> 151</span>
<span class="number"> 152</span><span class="p">#if defined HLSL &amp;&amp; !defined CG</span>
<span class="number"> 153</span><span class="p">#include &lt;allegro5/allegro_direct3d.h&gt;</span>
<span class="number"> 154</span><span class="p">#include &lt;d3d9.h&gt;</span>
<span class="number"> 155</span><span class="p">#include &lt;d3dx9.h&gt;</span>
<span class="number"> 156</span>
<span class="number"> 157</span><span class="p">#define A5V_FVF (D3DFVF_XYZ | D3DFVF_TEX2 | D3DFVF_TEXCOORDSIZE2(0) | D3DFVF_TEXCOORDSIZE4(1))</span>
<span class="number"> 158</span>
<span class="number"> 159</span><span class="k1">void</span> drawD3D<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_VERTEX"><span class="a">ALLEGRO_VERTEX</span></a> <span class="k3">*</span>v, <span class="k1">int</span> start, <span class="k1">int</span> count<span class="k2">)</span>
<span class="number"> 160</span><span class="k2">{</span>
<span class="number"> 161</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_current_display"><span class="a">al_get_current_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 162</span>  LPDIRECT3DDEVICE9 device <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_d3d_device"><span class="a">al_get_d3d_device</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 163</span>
<span class="number"> 164</span>  device-&gt;SetFVF<span class="k2">(</span>A5V_FVF<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 165</span>
<span class="number"> 166</span>  device-&gt;DrawPrimitiveUP<span class="k2">(</span>D3DPT_TRIANGLELIST, count <span class="k3">/</span> <span class="n">3</span>,
<span class="number"> 167</span>    <span class="k3">&amp;</span>v<span class="k2">[</span>start<span class="k2">]</span>.x, <span class="k1">sizeof</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_VERTEX"><span class="a">ALLEGRO_VERTEX</span></a><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 168</span><span class="k2">}</span>
<span class="number"> 169</span><span class="p">#endif</span>
<span class="number"> 170</span>
<span class="number"> 171</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span><span class="k3">*</span>argv<span class="k2">)</span>
<span class="number"> 172</span><span class="k2">{</span>
<span class="number"> 173</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display<span class="k2">;</span>
<span class="number"> 174</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>bmp<span class="k2">;</span>
<span class="number"> 175</span>  ALLEGRO_SHADER <span class="k3">*</span>shader<span class="k2">;</span>
<span class="number"> 176</span>  ALLEGRO_SHADER <span class="k3">*</span>shader2<span class="k2">;</span>
<span class="number"> 177</span>
<span class="number"> 178</span>  <span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>argc<span class="k2">;</span>
<span class="number"> 179</span>  <span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>argv<span class="k2">;</span>
<span class="number"> 180</span>
<span class="number"> 181</span>  <a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 182</span>  <a href="http://www.allegro.cc/manual/al_install_keyboard"><span class="a">al_install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 183</span>  <a href="http://www.allegro.cc/manual/al_init_image_addon"><span class="a">al_init_image_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 184</span>
<span class="number"> 185</span>  <a href="http://www.allegro.cc/manual/al_set_new_display_flags"><span class="a">al_set_new_display_flags</span></a><span class="k2">(</span>ALLEGRO_USE_PROGRAMMABLE_PIPELINE <span class="k3">|</span> EX_SHADER_FLAGS<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 186</span>
<span class="number"> 187</span>  display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span><span class="n">640</span>, <span class="n">480</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 188</span>
<span class="number"> 189</span>  bmp <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span><span class="s">"data/mysha.pcx"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 190</span>
<span class="number"> 191</span>  shader <span class="k3">=</span> al_create_shader<span class="k2">(</span>PLATFORM<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 192</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>shader<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 193</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"Could not create shader\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 194</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 195</span>  <span class="k2">}</span>
<span class="number"> 196</span>
<span class="number"> 197</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>al_attach_shader_source<span class="k2">(</span>shader, ALLEGRO_VERTEX_SHADER, vsource_name<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 198</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"%s\n"</span>, al_get_shader_log<span class="k2">(</span>shader<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 199</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 200</span>  <span class="k2">}</span>
<span class="number"> 201</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>al_attach_shader_source<span class="k2">(</span>shader, ALLEGRO_PIXEL_SHADER, psource_name<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 202</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"%s\n"</span>, al_get_shader_log<span class="k2">(</span>shader<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 203</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 204</span>  <span class="k2">}</span>
<span class="number"> 205</span>
<span class="number"> 206</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>al_link_shader<span class="k2">(</span>shader<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 207</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"%s\n"</span>, al_get_shader_log<span class="k2">(</span>shader<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 208</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 209</span>  <span class="k2">}</span>
<span class="number"> 210</span>
<span class="number"> 211</span>  shader2 <span class="k3">=</span> al_create_shader<span class="k2">(</span>PLATFORM<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 212</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>shader2<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 213</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"Could not create shader\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 214</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 215</span>  <span class="k2">}</span>
<span class="number"> 216</span>
<span class="number"> 217</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>al_attach_shader_source_file<span class="k2">(</span>shader2, ALLEGRO_VERTEX_SHADER, <span class="s">"data/test.hlslv"</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 218</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"%s\n"</span>, al_get_shader_log<span class="k2">(</span>shader<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 219</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 220</span>  <span class="k2">}</span>
<span class="number"> 221</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>al_attach_shader_source_file<span class="k2">(</span>shader2, ALLEGRO_PIXEL_SHADER, <span class="s">"data/test.hlslp"</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 222</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"%s\n"</span>, al_get_shader_log<span class="k2">(</span>shader2<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 223</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 224</span>  <span class="k2">}</span>
<span class="number"> 225</span>
<span class="number"> 226</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>al_link_shader<span class="k2">(</span>shader2<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 227</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"%s\n"</span>, al_get_shader_log<span class="k2">(</span>shader2<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 228</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 229</span>  <span class="k2">}</span>
<span class="number"> 230</span>
<span class="number"> 231</span><span class="p">#if defined GLSL</span>
<span class="number"> 232</span>  al_set_opengl_program_object<span class="k2">(</span>display, al_get_opengl_program_object<span class="k2">(</span>shader<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 233</span><span class="p">#elif defined HLSL</span>
<span class="number"> 234</span>  al_set_direct3d_effect<span class="k2">(</span>display, al_get_direct3d_effect<span class="k2">(</span>shader<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 235</span><span class="p">#endif</span>
<span class="number"> 236</span>
<span class="number"> 237</span>  <span class="k1">float</span> tints<span class="k2">[</span><span class="n">12</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span>
<span class="number"> 238</span>    <span class="n">4</span>.<span class="n">0</span>, <span class="n">0</span>.<span class="n">0</span>, <span class="n">1</span>.<span class="n">0</span>,
<span class="number"> 239</span>    <span class="n">0</span>.<span class="n">0</span>, <span class="n">4</span>.<span class="n">0</span>, <span class="n">1</span>.<span class="n">0</span>,
<span class="number"> 240</span>    <span class="n">1</span>.<span class="n">0</span>, <span class="n">0</span>.<span class="n">0</span>, <span class="n">4</span>.<span class="n">0</span>,
<span class="number"> 241</span>    <span class="n">4</span>.<span class="n">0</span>, <span class="n">4</span>.<span class="n">0</span>, <span class="n">1</span>.<span class="n">0</span>
<span class="number"> 242</span>  <span class="k2">}</span><span class="k2">;</span>
<span class="number"> 243</span>
<span class="number"> 244</span>  <span class="k1">while</span> <span class="k2">(</span><span class="n">1</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 245</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_KEYBOARD_STATE"><span class="a">ALLEGRO_KEYBOARD_STATE</span></a> s<span class="k2">;</span>
<span class="number"> 246</span>    <a href="http://www.allegro.cc/manual/al_get_keyboard_state"><span class="a">al_get_keyboard_state</span></a><span class="k2">(</span><span class="k3">&amp;</span>s<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 247</span>    <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/al_key_down"><span class="a">al_key_down</span></a><span class="k2">(</span><span class="k3">&amp;</span>s, ALLEGRO_KEY_ESCAPE<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 248</span>      <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 249</span>
<span class="number"> 250</span>    <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">140</span>, <span class="n">40</span>, <span class="n">40</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 251</span>
<span class="number"> 252</span>    al_set_shader_sampler<span class="k2">(</span>shader2, <span class="s">"tex"</span>, bmp, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 253</span>
<span class="number"> 254</span>    al_use_shader<span class="k2">(</span>shader2, <span class="k1">true</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 255</span>    <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>bmp, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 256</span>    al_use_shader<span class="k2">(</span>shader2, <span class="k1">false</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 257</span>
<span class="number"> 258</span>    al_set_shader_sampler<span class="k2">(</span>shader, <span class="s">"tex"</span>, bmp, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 259</span>    al_set_shader_float_vector<span class="k2">(</span>shader, <span class="s">"tint"</span>, <span class="n">3</span>, <span class="k3">&amp;</span>tints<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 260</span>    al_use_shader<span class="k2">(</span>shader, <span class="k1">true</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 261</span>    <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>bmp, <span class="n">320</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 262</span>    al_use_shader<span class="k2">(</span>shader, <span class="k1">false</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 263</span>
<span class="number"> 264</span>    al_set_shader_sampler<span class="k2">(</span>shader2, <span class="s">"tex"</span>, bmp, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 265</span>    al_use_shader<span class="k2">(</span>shader2, <span class="k1">true</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 266</span>    <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>bmp, <span class="n">0</span>, <span class="n">240</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 267</span>    al_use_shader<span class="k2">(</span>shader2, <span class="k1">false</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 268</span>
<span class="number"> 269</span>
<span class="number"> 270</span>    <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 271</span>
<span class="number"> 272</span>    <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">01</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 273</span>  <span class="k2">}</span>
<span class="number"> 274</span>
<span class="number"> 275</span>  al_destroy_shader<span class="k2">(</span>shader<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 276</span>
<span class="number"> 277</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 278</span><span class="k2">}</span>
</div></div><p>

The drawn bitmaps should be white, but clearly they are being drawn by the first shader and are green.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (jmasterx)</author>
		<pubDate>Fri, 17 Aug 2012 07:14:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I don&#39;t know what&#39;s going on on my system. The window gets created but then it exits with return code 1, but nothing is printed, and I&#39;m running it as a console program. Single stepping from main doesn&#39;t show anything either. I&#39;m using a VM but I&#39;ll reboot a bit later tonight and try to figure it out from a real Windows install.</p><p>EDIT: Oops. I didn&#39;t read the code and notice the external shader source. It is not displaying them in green.</p><p>EDIT2: 1 character fix: &quot;shader&quot; in the al_set_direct3d_effect should be shader2. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Trent Gamblin)</author>
		<pubDate>Fri, 17 Aug 2012 08:02:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I did it on purpose for the D3D effect not to be shader2. Do you mean I have to call set d3d effect every time I want to switch shaders? I thought I only called that to set the default shader pair.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (jmasterx)</author>
		<pubDate>Fri, 17 Aug 2012 15:58:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>There&#39;s no such thing as a default shader pair. You set the shader and keep track of which one you want set. So yes, you call it every time.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Trent Gamblin)</author>
		<pubDate>Fri, 17 Aug 2012 23:08:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ooooooh... okay. That makes much more sense.</p><p>So in my Shader class I should keep a static pointer to the &#39;default&#39; (by default I mean the ones I set to take the place of the fixed pipeline) shader pair.</p><p>I imagined it as setting a default shader pair that basically takes place of fixed pipeline, then when you use() a shader it overrides that until you use(false) where it would go back to the default pair. Maybe that could be an option, it seems redundant to have to keep track of the shader that takes place of the fixed pipeline.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (jmasterx)</author>
		<pubDate>Fri, 17 Aug 2012 23:33:54 +0000</pubDate>
	</item>
</rss>
