https://wiki.delphigl.com/index.php?title=Tutorial_Alphamasking&feed=atom&action=history
Tutorial Alphamasking - Versionsgeschichte
2024-03-29T08:03:32Z
Versionsgeschichte dieser Seite in DGL Wiki
MediaWiki 1.27.4
https://wiki.delphigl.com/index.php?title=Tutorial_Alphamasking&diff=25614&oldid=prev
Openglerf: Vorraus -> Voraus
2012-03-21T14:28:59Z
<p>Vorraus -> Voraus</p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr style='vertical-align: top;' lang='de'>
<td colspan='2' style="background-color: white; color:black; text-align: center;">← Nächstältere Version</td>
<td colspan='2' style="background-color: white; color:black; text-align: center;">Version vom 21. März 2012, 14:28 Uhr</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l8" >Zeile 8:</td>
<td colspan="2" class="diff-lineno">Zeile 8:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>==Schritt 1 - Den Alphakanal erstellen==</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>==Schritt 1 - Den Alphakanal erstellen==</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Um eine Textur mit einem Alphakanal zu versehen, gibt es zwei Methoden. Zum Einen kann man diesen direkt in das Bild integrieren. Dies geht jedoch nicht mit jedem Bildbearbeitungsprogramm und setzt ein Bildformat <del class="diffchange diffchange-inline">vorraus</del>, das die Speicherung des Alphakanals unterstützt, wie dies z.B. bei TGA und PNG der Fall ist.</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Um eine Textur mit einem Alphakanal zu versehen, gibt es zwei Methoden. Zum Einen kann man diesen direkt in das Bild integrieren. Dies geht jedoch nicht mit jedem Bildbearbeitungsprogramm und setzt ein Bildformat <ins class="diffchange diffchange-inline">voraus</ins>, das die Speicherung des Alphakanals unterstützt, wie dies z.B. bei TGA und PNG der Fall ist.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>Die zweite Methode ist etwas einfacher. Neben der Basistextur erstellt man eine zweite Textur in der der Alphakanal gespeichert ist. Weisse Pixel werden gezeichnet, während die schwarzen Pixel durch das Alphatesting weggelassen werden. Im Falle des Demoprogrammes sehen die Texturen folgendermaßen aus:</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>Die zweite Methode ist etwas einfacher. Neben der Basistextur erstellt man eine zweite Textur in der der Alphakanal gespeichert ist. Weisse Pixel werden gezeichnet, während die schwarzen Pixel durch das Alphatesting weggelassen werden. Im Falle des Demoprogrammes sehen die Texturen folgendermaßen aus:</div></td></tr>
</table>
Openglerf
https://wiki.delphigl.com/index.php?title=Tutorial_Alphamasking&diff=22932&oldid=prev
DGLBot: Der Ausdruck ''<pascal>(.*?)</pascal>'' wurde ersetzt mit ''<source lang="pascal">$1</source>''.
2009-03-10T18:11:32Z
<p>Der Ausdruck ''<pascal>(.*?)</pascal>'' wurde ersetzt mit ''<source lang="pascal">$1</source>''.</p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr style='vertical-align: top;' lang='de'>
<td colspan='2' style="background-color: white; color:black; text-align: center;">← Nächstältere Version</td>
<td colspan='2' style="background-color: white; color:black; text-align: center;">Version vom 10. März 2009, 18:11 Uhr</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l26" >Zeile 26:</td>
<td colspan="2" class="diff-lineno">Zeile 26:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><pascal>procedure TGLForm.LoadTextures;</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><<ins class="diffchange diffchange-inline">source lang="</ins>pascal<ins class="diffchange diffchange-inline">"</ins>>procedure TGLForm.LoadTextures;</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>const</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>const</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>Name : array[0..NumTex-1] of String = ('grass1', 'tree');</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>Name : array[0..NumTex-1] of String = ('grass1', 'tree');</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l41" >Zeile 41:</td>
<td colspan="2" class="diff-lineno">Zeile 41:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>  end;</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>  end;</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>...</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>...</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>end;</<del class="diffchange diffchange-inline">pascal</del>></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>end;</<ins class="diffchange diffchange-inline">source</ins>></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l51" >Zeile 51:</td>
<td colspan="2" class="diff-lineno">Zeile 51:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><pascal>procedure TTree.Draw;</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><<ins class="diffchange diffchange-inline">source lang="</ins>pascal<ins class="diffchange diffchange-inline">"</ins>>procedure TTree.Draw;</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>begin</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>begin</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>  glEnable(GL_BLEND);</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>  glEnable(GL_BLEND);</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l92" >Zeile 92:</td>
<td colspan="2" class="diff-lineno">Zeile 92:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>  glDisable(GL_ALPHA_TEST);</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>  glDisable(GL_ALPHA_TEST);</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>  glDisable(GL_BLEND);</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>  glDisable(GL_BLEND);</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>end;</<del class="diffchange diffchange-inline">pascal</del>></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>end;</<ins class="diffchange diffchange-inline">source</ins>></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
</table>
DGLBot
https://wiki.delphigl.com/index.php?title=Tutorial_Alphamasking&diff=20975&oldid=prev
I0n0s: /* Download */ +Tut_Wassereffekt
2007-10-28T12:26:53Z
<p><span dir="auto"><span class="autocomment">Download: </span> +Tut_Wassereffekt</span></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr style='vertical-align: top;' lang='de'>
<td colspan='2' style="background-color: white; color:black; text-align: center;">← Nächstältere Version</td>
<td colspan='2' style="background-color: white; color:black; text-align: center;">Version vom 28. Oktober 2007, 12:26 Uhr</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l120" >Zeile 120:</td>
<td colspan="2" class="diff-lineno">Zeile 120:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>{{TUTORIAL_NAVIGATION|[[Tutorial StereoSehen]]|<del class="diffchange diffchange-inline">-</del>}}</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>{{TUTORIAL_NAVIGATION|[[Tutorial StereoSehen]]|<ins class="diffchange diffchange-inline">[[Tutorial Wassereffekt]]</ins>}}</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>[[Kategorie:Tutorial|Alphamasking]]</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>[[Kategorie:Tutorial|Alphamasking]]</div></td></tr>
</table>
I0n0s
https://wiki.delphigl.com/index.php?title=Tutorial_Alphamasking&diff=16374&oldid=prev
Flash: Navi: Eine kleine Aufgabe für den Schreiber, aber eine große hilfe für die User
2006-02-25T17:39:45Z
<p>Navi: Eine kleine Aufgabe für den Schreiber, aber eine große hilfe für die User</p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr style='vertical-align: top;' lang='de'>
<td colspan='2' style="background-color: white; color:black; text-align: center;">← Nächstältere Version</td>
<td colspan='2' style="background-color: white; color:black; text-align: center;">Version vom 25. Februar 2006, 17:39 Uhr</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l117" >Zeile 117:</td>
<td colspan="2" class="diff-lineno">Zeile 117:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>Autor: [[Benutzer:Sascha_Willems|Sascha Willems]]</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>Autor: [[Benutzer:Sascha_Willems|Sascha Willems]]</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">{{TUTORIAL_NAVIGATION|[[Tutorial StereoSehen]]|-}}</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">[[Kategorie:Tutorial|Alphamasking]]</ins></div></td></tr>
</table>
Flash
https://wiki.delphigl.com/index.php?title=Tutorial_Alphamasking&diff=16372&oldid=prev
La Boda am 25. Februar 2006 um 12:56 Uhr
2006-02-25T12:56:05Z
<p></p>
<p><b>Neue Seite</b></p><div>=Alphamasking=<br />
<br />
==Einleitung==<br />
In diesem Tutorial geht es um die Nutzung des Alphakanals einer Textur. Wie Sie wissen, besteht ein Bild (bzw. eine Textur) aus den drei Komponenten Rot, Grün und Blau. In OpenGL gibt es, den richtigen Modus vorausgesetzt (GL_RGBA), noch eine weitere Komponente, nämlich den Alphakanal.<br />
<br />
Dieser kann genutzt werden, um nicht erwünschte Pixel einer Textur auszublenden. Viele Spiele nutzen das Alphablending, um Bäume oder Ähnliches darzustellen. Durch die Nutzung dieser Methode wird die Anzahl der zu zeichnenden Dreiecke stark verringert, da für einen Baum meist 2 Quads (also 4 Dreiecke) ausreichend sind. Ein gutes Beispiel hierfür (auch wenn die in diesem Spiel genutzte Methode, Bäume zu zeichnen nicht die Beste ist) ist Collin McRae 2.0 von [http://www.codemasters.com Codemasters]. <br />
<br />
<br />
==Schritt 1 - Den Alphakanal erstellen==<br />
Um eine Textur mit einem Alphakanal zu versehen, gibt es zwei Methoden. Zum Einen kann man diesen direkt in das Bild integrieren. Dies geht jedoch nicht mit jedem Bildbearbeitungsprogramm und setzt ein Bildformat vorraus, das die Speicherung des Alphakanals unterstützt, wie dies z.B. bei TGA und PNG der Fall ist.<br />
<br />
Die zweite Methode ist etwas einfacher. Neben der Basistextur erstellt man eine zweite Textur in der der Alphakanal gespeichert ist. Weisse Pixel werden gezeichnet, während die schwarzen Pixel durch das Alphatesting weggelassen werden. Im Falle des Demoprogrammes sehen die Texturen folgendermaßen aus:<br />
<br />
<br />
{|rules="all" border = "1"<br />
| [[Bild:Tutorial_Alphamasking_alphablend03.jpg]]<br />
| [[Bild:Tutorial_Alphamasking_alphablend02.jpg]]<br />
|-<br />
| Basistextur<br />
| Alphatextur<br />
|}<br />
<br />
<br />
==Schritt 2 - Den Alphakanal laden==<br />
Um die Sache zu erleichtern, wird auch in diesem Tutorial die GLBmp-Unit ([http://delphigl.cfxweb.net http://delphigl.cfxweb.net]) genutzt. Die von mir leicht modifizierte Version ist im Download enthalten. Die Klasse TGLBmp bietet nämlich mit ''AddAlpha(FileName : String)'' eine einfache Funktion, um den Alphakanal einer Textur aus einer seperaten Datei zu generieren. Wurde der Alphakanal jedoch schon im Bildbearbeitungsprogramm integriert, wird dieser Schritt natürlich nicht mehr benötigt.<br />
<br />
<br />
<pascal>procedure TGLForm.LoadTextures;<br />
const<br />
Name : array[0..NumTex-1] of String = ('grass1', 'tree');<br />
...<br />
begin<br />
for i := 0 to High(Name) do<br />
begin<br />
Texture[i] := TGLBmp.Create;<br />
Texture[i].LoadImage('tex\'+Name[i]+'.tga');<br />
if Name[i] = 'tree' then<br />
if not Texture[i].AddAlpha('tex\treealpha.tga') then<br />
ShowMessage('Couldn''t load Alphamask!');<br />
Texture[i].GenTexture(False,False);<br />
end;<br />
...<br />
end;</pascal><br />
<br />
<br />
In unserer Ladeprozedur werden die Texturen wie immer in ein Array geladen und im Falle der Baumtextur wird noch zusätzlich der Alphakanal aus einer anderen Bilddatei generiert.<br />
<br />
<br />
==Schritt 3 - Den Alphakanal nutzen==<br />
Nachdem wir unsere Baumtextur also nun mit einem Alphakanal versehen haben, wollen wir diesen natürlich auch nutzen:<br />
<br />
<br />
<pascal>procedure TTree.Draw;<br />
begin<br />
glEnable(GL_BLEND);<br />
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);<br />
<br />
glEnable(GL_ALPHA_TEST);<br />
glAlphaFunc(GL_GREATER, 0.1);<br />
<br />
Texture[1].Bind;<br />
glPushMatrix;<br />
glTranslatef(Position.x, Position.y, Position.z);<br />
glRotatef(Rotation, 0, 1, 0);<br />
<br />
glBegin(GL_QUADS);<br />
glTexCoord2f(0, 0); glVertex3f(-0.5*Size, 0, 0);<br />
glTexCoord2f(0, 1); glVertex3f(-0.5*Size, 1*Size, 0);<br />
glTexCoord2f(1, 1); glVertex3f( 0.5*Size, 1*Size, 0);<br />
glTexCoord2f(1, 0); glVertex3f( 0.5*Size, 0, 0);<br />
glEnd;<br />
glBegin(GL_QUADS);<br />
glTexCoord2f(0, 0); glVertex3f(0, 0, -0.5*Size);<br />
glTexCoord2f(0, 1); glVertex3f(0, 1*Size, -0.5*Size);<br />
glTexCoord2f(1, 1); glVertex3f(0, 1*Size, 0.5*Size);<br />
glTexCoord2f(1, 0); glVertex3f(0, 0, 0.5*Size);<br />
glEnd;<br />
glPopMatrix;<br />
glPushMatrix;<br />
<br />
glTranslatef(Position.x, Position.y, Position.z);<br />
glRotatef(90, 0, 0, 1);<br />
glColor4f(0,0,0,0.5);<br />
glBegin(GL_QUADS);<br />
glTexCoord2f(0, 0); glVertex3f(0.01, 0, -0.5*Size);<br />
glTexCoord2f(0, 1); glVertex3f(0.01, 1.5*Size, -0.5*Size);<br />
glTexCoord2f(1, 1); glVertex3f(0.01, 1.5*Size, 0.5*Size);<br />
glTexCoord2f(1, 0); glVertex3f(0.01, 0., 0.5*Size);<br />
glEnd;<br />
glColor4f(1,1,1,1);<br />
glPopMatrix;<br />
glDisable(GL_ALPHA_TEST);<br />
glDisable(GL_BLEND);<br />
end;</pascal><br />
<br />
<br />
Der Alphatest wird über den Befehl [[glEnable]] mit dem Parameter '''GL_ALPHA_TEST''' aktiviert, während mit der Funktion [[glAlphaFunc]] die Art des Alphatests festgelegt wird. In obiger Prozedur werden durch den Parameter '''GL_GREATER''' nur Pixel mit einem Vergleichswert größer 0.1 durchgelassen. Da dieser Wert bei schwarzen Pixeln < 0.1 ist, werden alle schwarzen Teile der Alphatextur transparent dargestellt. Diesen Parameter kann man als Toleranzgrenze betrachten.<br />
<br />
In den Zeilen 7-24 wird unser Baum in Form von zwei in einem Winkel von 90° zueinander stehenden Quads gezeichnet, während in den Zeilen 25-33 der Schatten des Baumes gezeichnet wird. Diese Methode Schatten zu zeichnen ist zwar einfach zu realisieren, sollte jedoch bei unebenen Flächen nicht genutzt werden. Für das Demonstrationsprogramm war der Effekt jedoch ausreichend.<br />
<br />
<br />
Dies ist alles, was nötig ist um den Alphakanal einer Textur für Transparenzeffekte zu nutzen. Natürlich kann der Alphakanal auch für andere Dinge genutzt werden, aber Alpha Masking ist wohl die häufigste Anwendung.<br />
<br />
<br />
==Das Beispielprogramm==<br />
Das Beispielprogramm zu diesem Tutorial wurde in Delphi 6.0 geschrieben, sollte jedoch ab Delphi 4.0 kompilierbar sein. Der Blickwinkel wird mit der Maus verändert, während man sich mit Cursor Hoch/Runter bewegen kann. Da keine speziellen OpenGL-Erweiterungen genutzt werden, sollte es auch auf älteren Grafikkarten lauffähig sein.<br />
<br />
<br />
Hier noch ein Bild aus dem Demonstrationsprogramm:<br />
<br />
<br />
[[Bild:Tutorial_Alphamasking_alphablend01.jpg]]<br />
<br />
<br />
==Download==<br />
[http://delphigl.de/files/alphamask.zip Alpha Masking Demo (inklusive Quellcode) herunterladen]<br />
<br />
Autor: [[Benutzer:Sascha_Willems|Sascha Willems]]</div>
La Boda