Zeer eenvoudige uitleg van glOrthof () in OpenGL ES

Ik zag een aantal eerdere berichten en explantaties op internet van glOrthof, maar ik begrijp het gewoon niet. Ik kijk naar de Stanford OpenGL ES les op YouTube en de volgende code kwam naar voren:

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(0, backingWidth, 0, backingHeight, -1, 1);

Deze code tekent 1px bij 1px in de linkerbenedenhoek van het scherm. Waarom zou het dit doen? Ik dacht dat deze code de foto uit (0,0) zou halen en deze over het gehele scherm zou uitrekken, omdat het het vlak aangeeft van 0 tot de breedte van het scherm en 0 tot de hoogte van het scherm. Kan iemand zo eenvoudig mogelijk uitleggen waarom het als 1px door 1px in de linkerbenedenhoek tekent? De volledige broncode is te vinden op de Stanford-website met het label "openGLtransforms.zip":

Broncode Website

(Het bestand waar deze code verschijnt is ES1Renderer.m)

Bedankt!

1
ja ru de

1 antwoord

Nee, glortho "brengt" wat erin zit in kaart op je scherm, waardoor het midden van het scherm het centrum van die vlakken wordt. Dus als je een object op (0,0,0) plaatst, gezien je Glortho-oproep, zal het object in de hoek van je scène worden geplaatst. Waarschijnlijk is het handiger om de vlakken te laten lopen van -backingWidth/2 naar + backingWidth/2 en -backingHeight/2 naar backingHeight/2. Hoe groot is jouw object? je zFar-vlak is te dichtbij zaar, passen je objecten in die ruimte?

0
toegevoegd
Ik snap het nog steeds niet :(. Wat zou dit bijvoorbeeld doen: glOrthof (-2, 2, -2, 2, -1, 1);
toegevoegd de auteur foobar5512, de bron
Mijn punt is dat het nog steeds geldig is, het "ik dacht dat deze code de foto zou nemen vanaf (0,0) en het over het hele scherm zou uitrekken" is niet correct. Het "kaart" wat het is in dat vlak en past het in het scherm. Je moet die vlakken zo plaatsen dat wat je tussen hen maakt in de ruimte op het scherm valt. Hoe is uw GL_VIEWPORT-configuratie ingesteld?
toegevoegd de auteur Trax, de bron
Die voorbeelden zijn 2D.
toegevoegd de auteur Jonathan Chandler, de bron
Zie Ortho als een kubus waarin u mag tekenen. U kunt buiten de kubus tekenen, maar dat wordt niet op het scherm weergegeven. Dus voor uw vraag ziet u alleen veelhoeken in de kubus van (-2, -2, -1) tot (2, 2, 1). Omdat dit 2D-polygonen zijn en de Z is ingesteld op 0, zijn uw Z-grenzen verwaarloosbaar.
toegevoegd de auteur Jonathan Chandler, de bron