Werbeanzeige
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Da steht auch noch mehr, nicht nur für Ortho-Darstellung! Du musst schon die ganze Antwort lesen.gluOrtho2D benutze ich nicht da ich nur Core drin haben will.
Dein Fenster ist doch sicherlich nicht quadratisch. Alles, was Du tun musst, ist die Aspect-Ratio für deinen Viewport genau so zu setzen, wie die Maße des Fensters sind. Was genau gluOrtho macht, kann man übrigens auch nachlesen und dann genau das auch selbst machen.Ist der Viewport quadratisch entstehen keine verzerrungen.
Da steht auch noch mehr, nicht nur für Ortho-Darstellung! Du musst schon die ganze Antwort lesen..gluOrtho2D benutze ich nicht da ich nur Core drin haben will.
![]() |
C-/C++-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
static char sVertexShader[] = "#version 330\n" "precision highp float;\n" "precision highp int;\n" "\n" "layout (location = 0) in vec2 _v2Vertex;\n" "layout (location = 1) in vec2 _v2Texture;\n" "\n" "out vec2 _v2Texture_;\n" "\n" "void main (void)\n" "{\n" " _v2Texture_ = _v2Texture;\n" " gl_Position = vec4(_v2Vertex.x, _v2Vertex.y, 0.0, 1.0);\n" "}\n"; |
So geht es, ja. Auch wenn es übel langsam wird, für jedes Sprite einen Viewport zu setzen und einen separaten DrawCall aufzumachen.
Ich gebe in den Shader 1 / Bildschirmauflösung als Konstante rein, so dass ich alles im Shader in Pixelkoordinaten rechnen kann. Dann wende ich im Shader zuerst die Rotation an und rechne erst am Ende alles mit Hilfe der Konstante in den Clip Space (-1 bis +1) um.
Werbeanzeige