ich hatte ja hier mal nach 3D ohne X gefragt:
http://zfx.info/viewtopic.php?f=5&t=3755 ich habe das Beispiel
etwas umgebaut und entflochten. Läuft bisher gut genug für meine Zwecke. Wegen
meiner nicht immer ganz aktuellen Hardware wollte ich OpenGL ES 2.0 verwenden.
Jetzt wollte ich eigentlich mit FreeType Texte auf ein Dreieck schreiben. Das
habe ich aber nicht zum laufen bekommen um es einfacher zu machen habe ich
dann erst mal versucht einfach irgendeine Textur auf das Dreieck zu malen was
aber auch nur Teilweise funktioniert.
Hier mal die Source-Code Teile:
Vertex-Shader:
Code: Alles auswählen
#version 300 es
layout (location = 0) in vec4 vPosition;
void main ()
{
gl_Position = vPosition;
}
Code: Alles auswählen
#version 300 es
precision mediump float;
out vec3 fragColor;
in vec2 UV;
uniform sampler2D myTexture;
void main ()
{
fragColor = texture(myTexture, UV).rgb;
}
Code: Alles auswählen
glClearColor (0.0, 0.0, 0.0, 0.0);
glClear (GL_COLOR_BUFFER_BIT);
glUseProgram (gl.program);
GLubyte pixels [] = { 255, 0, 0, 0, 255, 0, 0, 0, 255, 255, 255, 0 };
glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
GLuint textureId;
glGenTextures (1, &textureId);
glBindTexture (GL_TEXTURE_2D, textureId);
glTexImage2D (GL_TEXTURE_2D, 0, GL_RGB, 4, 3, 0, GL_RGB, GL_UNSIGNED_BYTE, pixels);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
GLint texLoc = glGetUniformLocation(gl.program, "myTexture");
glActiveTexture (GL_TEXTURE0); // activate texture unit 0
glUniform1i (texLoc, 0); // inform the shader to use texture unit 0
GLfloat triangle_vertices[] = { 0.0, 0.8,
-0.8, -0.8,
0.8, -0.8,
0.5, 0,9 };
GLint attribute_coord;
glEnableVertexAttribArray (attribute_coord);
glVertexAttribPointer (attribute_coord, 2, GL_FLOAT, GL_FALSE, 0, triangle_vertices);
glDrawArrays (GL_TRIANGLES, 0, 3);
glDisableVertexAttribArray (attribute_coord);
glFlush ();
Das Programm gibt jetzt ein rotes Dreieck aus. Wenn man im Array pixels die Werte in der ersten Zeile verändert dann ändert sich die Farbe des Dreiecks. Ich hätte allerdings erwartet das alles aus dem Array pixels zum füllen des Dreiecks verwendet wird und halt entsprechend oft hintereinander kopiert.
Grüße
Alexander