Einzelnen Beitrag anzeigen

Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#6

Re: Texturierung ohne OpenGl/DirectX

  Alt 14. Mär 2006, 17:07
Zitat von simlei:
Unter MSDN hab ich ehrlich gesagt nicht viel sinnvolles gefunden... ( )
Sry, ich hab da mit der Genauigkeit wohl etwas gegeizt Was ich meinte war der beschriebene Ablauf, der Durchlaufen wird, wenn man ein Dreieck texturiert und gedreht darstellen will. Der is in den DirectX-Docus zu finden, wenn man nach Fixed Function Pipeline oder Rendering Pipeline sucht.
Ich glaube nicht, dass das .NET-Framework hier von sich aus Funktionen zum Texturieren von gedrehten Polygonen mitsich bringt. Deswegen: du hast n bisschen Arbeit vor dir.
Ich versuch mal etwas genauer zu erklären, was ich mit "Arbeit" meine:
Du hast bspw. ein Dreieck. Das simpelste (und afaik einzigste) geometrische Gebilde, mit dem man jegliche gemoetrische Form zusammensetzen kann.
Dieses Dreieck hat 3 Koordinaten. Diese entsprechen den 3 Eckpunkten, wo sie sich im 3Dimensionalen Raum befinden. Nun rechnest du diese Koordinaten in Abhängigkeit der Rotation des 3Ecks in 2D-Koordinaten um, damit du sie auf dem Bildschirm darstellen kannst. Das hast du ja schon geschafft
Jetzt kommt der Teil, der dir Schwierigkeiten Macht. Die Farbe von jedem Pixel, das sich innerhalb des 3Ecks befindet, muss nun berechnet werden. D.h. du musst erstmal rausfinden: Welche Pixel befinden sich innerhalb des 3ecks, und welche tun das nicht? Das wird wohl in einer Schleife geschehen müssen, in der du Pixel für Pixel abfragst. Performance-Schub wär dann zu erreichen, wenn du die zu überprüfenden Pixels optimierst, und bspw. nur von der "linkesten" Ecke des Dreiecks bis zur Ecke ganz rechts überprüfst, und nicht alle Pixel der Zeichenfläche. Wahrscheinlich gibts dafür noch ne performantere Möglichkeit, wüsste jetzt aber nicht, welche.
So, für jedes Pixel, das sich im 3eck befindet musst du rausfinden, an welcher Position im 3Eck es sich befindet. Anhand dieser Position kannst du dann ausrechnen, welcher Teil der Textur jetzt da gezeichnet werden muss. Um das rauszukriegen, brauchst du aber noch eins: Texturkoordinaten. Du musst logisch wissen, welche Ecke der Textur an welches Eck des Dreiecks kommt. Anhand der damit nun errechneten Position nimmst du das Bitmap und holst dir die Farbe an dieser Position. Damit weißt du dann, welche Farbe das Pixel hat und kannst es zeichnen.
Wie du siehst, es ist nicht gerade einfach, und absolut nicht performant. Aber ich hoffe trotzdem, dass dus hinkriegst, bin auf dein Ergebnis gespannt

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat