Je suis un nouveau programmeur opengl. Je suis en train de tracer une carte de hauteur composée de milliers de triangles dans un format graphique 3D. Ils sont mis à l'échelle de sorte qu'ils sont tracés entre -1 et +1 dans les trois axes. Maintenant, je suis capable de zoomer dans l'axe X seulement et je suis capable de traduire dans l'axe X aussi bien en appliquant l'échelle appropriée et les matrices de traduction. Cela me permet effectivement de zoomer directement dans les données et de les déplacer dans la direction x comme je le choisis. Le problème est, une fois que j'obtiens un zoom, les données dans la direction x s'étend maintenant en dehors de la région -1 à + 1 qui délimite un graphique. Je veux que ces données ne soient pas affichées. Comment cela se fait-il dans OpenGL moderne? Merci Edit: Les matrices sont les suivantes:Comment restreindre le dessin en OpenGL entre deux coordonnées dans l'axe?
plottingProgram["projection_matrix"].SetValue(Matrix4.CreatePerspectiveFieldOfView(0.45f, (float)width/height, 0.1f, 1000f));
plottingProgram["view_matrix"].SetValue(Matrix4.LookAt(new Vector3(0, 0, 10), Vector3.Zero, new Vector3(0, 1, 0)));
et le vertex shader est
public static string VertexShader = @"
#version 130
in vec3 vertexPosition;
out vec2 textureCoordinate;
uniform mat4 projection_matrix;
uniform mat4 view_matrix;
uniform mat4 model_matrix;
void main(void)
{
textureCoordinate = vertexPosition.xy;
gl_Position = projection_matrix * view_matrix * model_matrix * vec4(vertexPosition, 1);
}
";
Voici un lien vers le graphique: http://va2fsq.com/wp-content/uploads/graph.jpg
Merci
Pouvez-vous ajouter une capture d'écran du cas problématique? Veuillez également montrer les matrices que vous utilisez actuellement (projection, ...). – BDL
Fait à la demande – Tom