Afficher un point en opengl [Résolu]

Messages postés
206
Date d'inscription
samedi 29 octobre 2005
Dernière intervention
7 mars 2012
- - Dernière réponse : dmk04
Messages postés
206
Date d'inscription
samedi 29 octobre 2005
Dernière intervention
7 mars 2012
- 19 mai 2006 à 19:09
Bonjour,

je commence l'opengl et je n'arrive pas à afficher un point.
J'ulise le code suivant :

#include <stdio.h>
#include <GL\glut.h>

void renderScene(void) {
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
}

void afficherPoint(float x, float y)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0f,0.0f,0.0f);

glBegin(GL_POINTS);
glVertex2f(x,y);
glEnd();

glFlush();
}

void main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(500,500);
glutCreateWindow("Afficher un point");
glClearColor(1,1,1,1);
glutDisplayFunc(renderScene);
afficherPoint(0,0);
glutMainLoop();
}

Si je demande à afficher mon point depuis renderScene ça marche mais pas depuis afficherPoint.

Merci pour votre aide

A+
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
89
Date d'inscription
mardi 8 février 2005
Dernière intervention
14 novembre 2007
3
Merci
Tu peux utiliser les lists d'affichage, exemple (Testé sous dev-cpp):

#include <stdio.h>
#include <GL\glut.h>

int idList;

void renderScene(void) {
  glClear(GL_COLOR_BUFFER_BIT);
  glColor3f(0.0f,0.0f,0.0f);
  glCallList(idList); // Affiche toute la liste
  glFlush();
}

void addPoint(float x, float y){
    glBegin(GL_POINTS);
      glVertex2f(x,y);
    glEnd();
}

void main(int argc, char **argv) {
  glutInit(&argc, argv);
  glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
  glutInitWindowPosition(100,100);
  glutInitWindowSize(500,500);
  glutCreateWindow("Afficher un point");
  glClearColor(1,1,1,1);
 
  idList = glGenLists(1);
  glNewList(idList,GL_COMPILE); // Commence une liste de dessin
 
  addPoint(0, 0);
  addPoint(.2, .2);
  addPoint(-.2, .2);
  addPoint(.2, -.2);
  addPoint(-.2,-.2);
 
  glEndList(); // Une fois tous les points ajouté,
               // on termine la liste
 
  glutDisplayFunc(renderScene);
  glutMainLoop();
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de Alcantornet
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Dernière intervention
28 juillet 2008
0
Merci
Bas c'est normal, dans ta fonction renderscene tu dis de rien n'afficher. Revois le fonctionnement de glut.

Mets ta fonction afficherPoint(0,0); dans renderscene.
Commenter la réponse de luhtor
Messages postés
206
Date d'inscription
samedi 29 octobre 2005
Dernière intervention
7 mars 2012
0
Merci
Mon soucis en fait, c'est que renderScene ne prend  pas de paramètres, et on ne peut pas passer une fonction avec paramètres à la fonction glutDisplayFunc.
Merci
A+
Commenter la réponse de dmk04
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Dernière intervention
28 juillet 2008
0
Merci
Mais tu vois un pb la ou il y en a pas:

Pour afficher un truc avec opengl, faut lui demander a chaque frame !
c'est pas un fonctionnement style paint ou style librairie basique.


void renderScene(void) {

glClear(GL_COLOR_BUFFER_BIT);


afficherPoint(0,0);


glFlush();

}


void afficherPoint(float x, float y)

{

glBegin(GL_POINTS);

glVertex2f(x,y);

glEnd();

}


void main(int argc, char **argv) {

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);

glutInitWindowPosition(100,100);

glutInitWindowSize(500,500);

glutCreateWindow("Afficher un point");

glClearColor(1,1,1,1);

glutDisplayFunc(renderScene);

glutMainLoop();

}
Commenter la réponse de luhtor
Messages postés
206
Date d'inscription
samedi 29 octobre 2005
Dernière intervention
7 mars 2012
0
Merci
Moi je voudrais pouvoir ajouter des points en appelant une fonction, dans ce cas les coordonnées sont fixées.
glutDisplayFunc n'est apparament pas la fonction appropriée. Connaitrais-tu une fonction qui correspondrait mieux à ce que je recherche ?
Merci,
A+
Commenter la réponse de dmk04
Messages postés
206
Date d'inscription
samedi 29 octobre 2005
Dernière intervention
7 mars 2012
0
Merci
Mal exprimé, je reprends ma première phrase :


Moi je voudrais pouvoir ajouter des points en appelant une fonction, et avec glutDisplayFunc les coordonnées sont fixées. On ne peut pas rajouter des points au fur et à mesure ?

Merci
A+
Commenter la réponse de dmk04
Messages postés
206
Date d'inscription
samedi 29 octobre 2005
Dernière intervention
7 mars 2012
0
Merci
Ok, merci ;)

A+
Commenter la réponse de dmk04

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.