/bin-release/srcview/source/starling/display/materials/Program3DCache.as.html

https://bitbucket.org/tshubbard/zfstarlingtutorial · HTML · 81 lines · 67 code · 13 blank · 1 comment · 0 complexity · e06e61d72d9d3c91d3d4b2c6334b2191 MD5 · raw file

  1. <!-- saved from url=(0014)about:internet -->
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  6. <title>Program3DCache.as</title>
  7. <link rel="stylesheet" type="text/css" href="../../../../SourceStyles.css"/>
  8. </head>
  9. <body><pre><span class="ActionScriptpackage">package</span> <span class="ActionScriptDefault_Text">starling</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">display</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">materials</span>
  10. <span class="ActionScriptBracket/Brace">{</span>
  11. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flash</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">display3D</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">Context3D</span>;
  12. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flash</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">display3D</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">Program3D</span>;
  13. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flash</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">utils</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">Dictionary</span>;
  14. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">starling</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">display</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">shaders</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">IShader</span>;
  15. <span class="ActionScriptReserved">internal</span> <span class="ActionScriptclass">class</span> <span class="ActionScriptDefault_Text">Program3DCache</span>
  16. <span class="ActionScriptBracket/Brace">{</span>
  17. <span class="ActionScriptReserved">private</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">uid</span> :<span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> 0;
  18. <span class="ActionScriptReserved">private</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">uidByShaderTable</span> :<span class="ActionScriptDefault_Text">Dictionary</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Dictionary</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">true</span><span class="ActionScriptBracket/Brace">)</span>;
  19. <span class="ActionScriptReserved">private</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">programByUIDTable</span> :<span class="ActionScriptDefault_Text">Object</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptBracket/Brace">}</span>;
  20. <span class="ActionScriptReserved">private</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">uidByProgramTable</span> :<span class="ActionScriptDefault_Text">Dictionary</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Dictionary</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">false</span><span class="ActionScriptBracket/Brace">)</span>;
  21. <span class="ActionScriptReserved">private</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">numReferencesByProgramTable</span> :<span class="ActionScriptDefault_Text">Dictionary</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Dictionary</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>;
  22. <span class="ActionScriptReserved">public</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">getProgram3D</span><span class="ActionScriptBracket/Brace">(</span> <span class="ActionScriptDefault_Text">context</span>:<span class="ActionScriptDefault_Text">Context3D</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">vertexShader</span>:<span class="ActionScriptDefault_Text">IShader</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">fragmentShader</span>:<span class="ActionScriptDefault_Text">IShader</span> <span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptDefault_Text">Program3D</span>
  23. <span class="ActionScriptBracket/Brace">{</span>
  24. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">vertexShaderUID</span>:<span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">uidByShaderTable</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">vertexShader</span><span class="ActionScriptBracket/Brace">]</span>;
  25. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span> <span class="ActionScriptDefault_Text">vertexShaderUID</span> <span class="ActionScriptOperator">==</span> 0 <span class="ActionScriptBracket/Brace">)</span>
  26. <span class="ActionScriptBracket/Brace">{</span>
  27. <span class="ActionScriptDefault_Text">vertexShaderUID</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">uidByShaderTable</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">vertexShader</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptOperator">++</span><span class="ActionScriptDefault_Text">uid</span>;
  28. <span class="ActionScriptBracket/Brace">}</span>
  29. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">fragmentShaderUID</span>:<span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">uidByShaderTable</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">fragmentShader</span><span class="ActionScriptBracket/Brace">]</span>;
  30. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span> <span class="ActionScriptDefault_Text">fragmentShaderUID</span> <span class="ActionScriptOperator">==</span> 0 <span class="ActionScriptBracket/Brace">)</span>
  31. <span class="ActionScriptBracket/Brace">{</span>
  32. <span class="ActionScriptDefault_Text">fragmentShaderUID</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">uidByShaderTable</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">fragmentShader</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptOperator">++</span><span class="ActionScriptDefault_Text">uid</span>;
  33. <span class="ActionScriptBracket/Brace">}</span>
  34. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">program3DUID</span>:<span class="ActionScriptDefault_Text">String</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">vertexShaderUID</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptString">"_"</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">fragmentShaderUID</span>;
  35. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">program3D</span>:<span class="ActionScriptDefault_Text">Program3D</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">programByUIDTable</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">program3DUID</span><span class="ActionScriptBracket/Brace">]</span>;
  36. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span> <span class="ActionScriptDefault_Text">program3D</span> <span class="ActionScriptOperator">==</span> <span class="ActionScriptReserved">null</span> <span class="ActionScriptBracket/Brace">)</span>
  37. <span class="ActionScriptBracket/Brace">{</span>
  38. <span class="ActionScriptDefault_Text">program3D</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">programByUIDTable</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">program3DUID</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">context</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">createProgram</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>;
  39. <span class="ActionScriptDefault_Text">uidByProgramTable</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">program3D</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">program3DUID</span>;
  40. <span class="ActionScriptDefault_Text">program3D</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">upload</span><span class="ActionScriptBracket/Brace">(</span> <span class="ActionScriptDefault_Text">vertexShader</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">opCode</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">fragmentShader</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">opCode</span> <span class="ActionScriptBracket/Brace">)</span>;
  41. <span class="ActionScriptDefault_Text">numReferencesByProgramTable</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">program3D</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> 0;
  42. <span class="ActionScriptBracket/Brace">}</span>
  43. <span class="ActionScriptDefault_Text">numReferencesByProgramTable</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">program3D</span><span class="ActionScriptBracket/Brace">]</span><span class="ActionScriptOperator">++</span>;
  44. <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">program3D</span>;
  45. <span class="ActionScriptBracket/Brace">}</span>
  46. <span class="ActionScriptReserved">public</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">releaseProgram3D</span><span class="ActionScriptBracket/Brace">(</span> <span class="ActionScriptDefault_Text">program3D</span>:<span class="ActionScriptDefault_Text">Program3D</span> <span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptReserved">void</span>
  47. <span class="ActionScriptBracket/Brace">{</span>
  48. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span> <span class="ActionScriptDefault_Text">numReferencesByProgramTable</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">program3D</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">==</span> <span class="ActionScriptReserved">null</span> <span class="ActionScriptBracket/Brace">)</span>
  49. <span class="ActionScriptBracket/Brace">{</span>
  50. <span class="ActionScriptReserved">throw</span><span class="ActionScriptBracket/Brace">(</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Error</span><span class="ActionScriptBracket/Brace">(</span> <span class="ActionScriptString">"Program3D is not in cache"</span> <span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">)</span>;
  51. <span class="ActionScriptReserved">return</span>;
  52. <span class="ActionScriptBracket/Brace">}</span>
  53. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">numReferences</span>:<span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">numReferencesByProgramTable</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">program3D</span><span class="ActionScriptBracket/Brace">]</span>;
  54. <span class="ActionScriptDefault_Text">numReferences</span><span class="ActionScriptOperator">--</span>;
  55. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span> <span class="ActionScriptDefault_Text">numReferences</span> <span class="ActionScriptOperator">==</span> 0 <span class="ActionScriptBracket/Brace">)</span>
  56. <span class="ActionScriptBracket/Brace">{</span>
  57. <span class="ActionScriptDefault_Text">program3D</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">dispose</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>;
  58. <span class="ActionScriptReserved">delete</span> <span class="ActionScriptDefault_Text">numReferencesByProgramTable</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">program3D</span><span class="ActionScriptBracket/Brace">]</span>;
  59. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">program3DUID</span>:<span class="ActionScriptDefault_Text">String</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">uidByProgramTable</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">program3D</span><span class="ActionScriptBracket/Brace">]</span>;
  60. <span class="ActionScriptReserved">delete</span> <span class="ActionScriptDefault_Text">programByUIDTable</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">program3DUID</span><span class="ActionScriptBracket/Brace">]</span>;
  61. <span class="ActionScriptReserved">delete</span> <span class="ActionScriptDefault_Text">uidByProgramTable</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">program3D</span><span class="ActionScriptBracket/Brace">]</span>;
  62. <span class="ActionScriptReserved">return</span>;
  63. <span class="ActionScriptBracket/Brace">}</span>
  64. <span class="ActionScriptDefault_Text">numReferencesByProgramTable</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">program3D</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">numReferences</span>;
  65. <span class="ActionScriptBracket/Brace">}</span>
  66. <span class="ActionScriptBracket/Brace">}</span>
  67. <span class="ActionScriptBracket/Brace">}</span></pre></body>
  68. </html>