OpenGL 3.x - GUI
-
Hallo!
Ich möchte einige GUI-Elemente in mein Programm einbauen.
Es sollen Buttons u.A. ausgegeben werden. Auch eine Textausgabe möchte ich implementieren.
Allerdings ist glOrtho leider nicht verfügbar.
Gibt es dazu eine Alternative? Also eine Möglichkeit die Perspektive auf 2D umzuschalten und die Ausgabe über Bildschirmkoordinaten(x,y) rendern zu können.
Ein simples Codebeispiel wäre super.Danke im Voraus.
Gruß
-
glLoadMatrixf
-
EOutOfResources schrieb:
glLoadMatrixf
Wenn ich mich nicht vertan habe, ist auch glLoadMatrix deprecated.
-
Wenn du reines OpenGL 3.0 verwenden willst dann läuft eh alles über Shader, wo liegt also das Problem!?
-
dot schrieb:
Wenn du reines OpenGL 3.0 verwenden willst dann läuft eh alles über Shader, wo liegt also das Problem!?
Wie erreiche ich eine orthographische Ausgabe über Shader?
-
Theumion schrieb:
Wie erreiche ich eine orthographische Ausgabe über Shader?
Du übergibst eine 4x4-Matrix als Parameter.
-
Theumion schrieb:
dot schrieb:
Wenn du reines OpenGL 3.0 verwenden willst dann läuft eh alles über Shader, wo liegt also das Problem!?
Wie erreiche ich eine orthographische Ausgabe über Shader?
Indem du einen Shader schreibst der, wie auch immer, deine Vertices entsprechend transformiert? Im Prinzip brauchst du ja nur eine Skalierung und Verschiebung...
-
Du musst im VertexShader jeden Vertex mit der "Ansichtsmatrix" multiplizieren.
Kleines Beispiel:#version 330 layout(location = 0) in vec3 Vertex; uniform mat4 myProjectionMatrix; void main() { gl_Position = myProjectionMatrix * vec4( Vertex, 1.0); }
Die Matrix errechnest du am besten über glm (http://glm.g-truc.net/ ). Die Library ist gegen die GLSL Spec geschrieben und eignet sich hervorragend als Fixed Function Ersatz:
glm::mat4 viewmatrix = glm::ortho<float>(0.0f, x, y, 0, -1.0f, 1.0f); int position = glGetAttribLocation(shaderID, "myProjectionMatrix"); glUniformMatrix4fv(position, 1, false, glm::value_ptr(viewmatrix ));
HTH.
-
Vielen herzlichen Dank:)