Ich benutze OpenGLES 2 und ich versuche, einen Shader zu erstellen, der für texturierte Quads optimiert wurde.OpenGL/GLSL versucht, einen Shader zum Zeichnen von Quads zu schreiben, aber nicht sicher, wie man Änderungen im Seitenverhältnis des Bildschirms behandelt
vert Shader:
attribute float vertIndex;
uniform vec4 verts[4] = vec4[](vec4(-1,-1,0,1), vec4(-1,1,0,1), vec4(1,1,0,1), vec4(1,-1,0,1));
uniform vec2 texCoords[4] = vec2[](vec2(0,0), vec2(0,1), vec2(1,1), vec2(1,0));
uniform vec2 size(0,0); //size of the quad about to be rendered
uniform vec2 translation(0,0); //position of the quad about to be rendered
varying vec2 TexCoordOut;
void main() {
vec2 vert = verts[int(vertIndex)];
vert.x *= size.x;
vert.y *= size.y;
vert.x += translation.x;
vert.y += translation.y;
gl_Position = vert;
TexCoordOut = texCoords[int(vertIndex)];
}
In meinem Programm habe ich die Bildschirm Grenzen gesetzt, so dass die x immer -1,1 sein wird, und die y wird basierend auf dem Seitenverhältnis des Bildschirms eingestellt werden. Das Problem ist, dass die Bildschirmgrenzen in Glsl immer -1,1,1, -1 sind. Wie gehe ich damit um? Außerdem verwende ich Floats anstelle von nicht signierten Zeichen für die Indizes, da es beim Versuch, Ints auf den Vert-Shader zu übertragen, nicht richtig funktioniert hat. Gibt es einen funktionierenden Weg, dies mit OpenGLES 2 zu tun?
Danke :).
Danke :). Es sagt, ich brauche 15 Rufpunkte zu +1, also kann ich das nicht tun. Es tut uns leid. – Holden