wat zijn de waarden van x en y na die printf? Is dat in device-coordinaten of in clip-space coordinaten (tussen -1 en 1)?
Als het devicecoordinaten zijn is het wel logisch: als alle matrices als identity zijn geinitializeerd, dan werk je dus direct in clipspace. Maar (-1, -1) in clipspace mapt naar de linker-onderhoek in je scherm. Wat je echter wilt is dat je devicespace coordinaten op kunt geven, aangezien je het aan wilt passen
Je zult een van de matrices (de projection lijkt me het best, hoewel het niet echt uitmaakt als de ander een identity matrix is) dus zo moeten zetten dat devicecoordinaten terug worden gezet naar clipspace coordinaten.
Om van devicespace terug te gaan naar clipspace, moeten er een aantal acties gebeuren. (0, 0) is de linker-bovenhoek van je scherm, en (width, height) de rechter-onderhoek. (width/2, height/2) ligt in het midden, en dat is (0, 0) in clipspace. We moeten dus eerst transleren over (-width/2, -height/2).
Als dat gedaan is dan is -width/2 de linkerkant, en width/2 de rechterkant. Dit moet resp. -1 en 1 worden. Let wel dat het bij de y net andersom is, aangezien positieve y in devicecoordinaten omlaag lopen, terwijl het in clipspace omhoog loopt. -height/2 is dus de bovenkant van het scherm, en height/2 is de onderkant, wat gemapped moet worden naar 1 en -1
Je doet dus een schaling over (1 / (width/2), -1 / (height / 2))
En dan heb je een matrix die devicecoordinaten terugzet naar clipspace coordinaten. Als je die zet als projection matrix dan moet het volgens mij wel lukken
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.