I datorgrafik hänvisar "fönster" och "Viewport" till olika rektangulära områden som är involverade i att visa en scen. De hänför sig till omvandlingen från världskoordinaterna för din scen till pixlarna på skärmen. Tänk på det som att titta genom ett fönster på en större scen (världen).
* fönster: Detta är en rektangulär region i * världskoordinater * som definierar den del av scenen som kommer att visas. Det anges i enheterna i din scens koordinatsystem (t.ex. mätare, pixlar i en 2D -bild). I huvudsak säger du "Jag vill bara visa världen i den här rutan."
* Viewport: Detta är en rektangulär region i * skärmkoordinater * (pixlar) där innehållet i fönstret kommer att visas. Det definieras av pixelkoordinaterna på din skärm eller displayenhet. Den anger området * på skärmen * där bilden dras. Du säger "Jag vill lägga bilden från fönstret i det här området på min skärm."
Analogi:
Föreställ dig att du tittar igenom en kamera.
* Fönstret är området för scenen som syns genom kameralinsen. Du kan zooma in eller ut (ändra fönsterstorlek) för att se olika delar av scenen.
* Viewport är storleken och platsen för bilden som visas på kamerans skärm eller i sökaren. Det kan vara hela skärmen, eller en mindre del av den.
i kod (konceptuell):
Låt oss säga att dina världskoordinater varierar från (0,0) till (100 100).
* Du kan definiera ett "fönster" från (20, 20) till (80, 80), vilket betyder att du bara vill visa den centrala delen av din scen.
* Din "Viewport" kan vara hela skärmen (t.ex. 0 till 800 pixlar bred, 0 till 600 pixlar höga). Bilden från fönstret (20,20) till (80,80) i världskoordinaterna kommer att kartläggas och skalas för att passa denna 800x600 pixelvy.
Transformation:
Renderingsprocessen innebär att transformera koordinaterna för objekt i fönstret till deras motsvarande pixelplatser inom visningsporten. Detta involverar en transformationsmatris som skalar, översätter och potentiellt roterar fönstrets innehåll så att den passar visningsporten. Detta kallas ofta en * projektionstransformation * i 3D -grafik.
Kort sagt:fönstret väljer * vad * en del av scenen att visa, och Viewport bestämmer * var * och * hur stor * den delen kommer att visas på skärmen.