Afficher un point en opengl [Résolu]

dmk04 206 Messages postés samedi 29 octobre 2005Date d'inscription 7 mars 2012 Dernière intervention - 19 mai 2006 à 11:25 - Dernière réponse : dmk04 206 Messages postés samedi 29 octobre 2005Date d'inscription 7 mars 2012 Dernière intervention
- 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 

7 réponses

Répondre au sujet
Alcantornet 89 Messages postés mardi 8 février 2005Date d'inscription 14 novembre 2007 Dernière intervention - 19 mai 2006 à 17:03
+3
Utile
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();
}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Alcantornet
luhtor 2023 Messages postés mardi 24 septembre 2002Date d'inscription 28 juillet 2008 Dernière intervention - 19 mai 2006 à 11:32
0
Utile
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
dmk04 206 Messages postés samedi 29 octobre 2005Date d'inscription 7 mars 2012 Dernière intervention - 19 mai 2006 à 11:38
0
Utile
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
luhtor 2023 Messages postés mardi 24 septembre 2002Date d'inscription 28 juillet 2008 Dernière intervention - 19 mai 2006 à 12:25
0
Utile
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
dmk04 206 Messages postés samedi 29 octobre 2005Date d'inscription 7 mars 2012 Dernière intervention - 19 mai 2006 à 13:44
0
Utile
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
dmk04 206 Messages postés samedi 29 octobre 2005Date d'inscription 7 mars 2012 Dernière intervention - 19 mai 2006 à 13:52
0
Utile
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
dmk04 206 Messages postés samedi 29 octobre 2005Date d'inscription 7 mars 2012 Dernière intervention - 19 mai 2006 à 19:09
0
Utile
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.