Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Programmation > Langage C++ > [OpenGL - SFML] Dessiner un cercle manuellement > Lecture du sujet

[OpenGL - SFML] Dessiner un cercle manuellement

Ou comment pratiquer avec les cosinus et les sinus

Vous devez être inscrit pour pouvoir poster des messages

RésoluLe problème de ce sujet a été résolu

Page : Précédente  1  2 
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : Précédente  1  2 
Hors ligne Hertzien' # Posté le 07/07/2008 à 17:13:41
C++, C(encore)++ fort !
Avatar
Groupe : Membres
Reprise du dernier message de la page précédente :
Up :)

Mon problème : [FFMpeg] Installation
Notre équipe : C++ (au complet !)
SuperTux : Le jeu qui innove !
SFML - Anim : Ma classe C++ pour gérer les sprites SFML animés
 
Hors ligne neuneutrinos # Posté le 07/07/2008 à 17:52:36
Avatar
Groupe : Membres
on peut voir ta fonction "sauvegarder" ?

:p il n'y a que les abriutis qui ne changent pas d'avis :p

notre équipe ;)

 
Hors ligne Hertzien' # Posté le 07/07/2008 à 19:59:17
C++, C(encore)++ fort !
Avatar
Groupe : Membres
C'est un App.Capture().SaveToFile("Screenshot.png");

C'est fourni par la SFML ;)

Mon problème : [FFMpeg] Installation
Notre équipe : C++ (au complet !)
SuperTux : Le jeu qui innove !
SFML - Anim : Ma classe C++ pour gérer les sprites SFML animés
 
Hors ligne altic # Posté le 07/07/2008 à 20:26:58
Avatar
Groupe : Membres
Cette réponse a aidé l'auteur du sujet Cette réponse a aidé l'auteur du sujet
Tu fais peut-être appel à cette fonction avant d'avoir dessiné.
 
Hors ligne Hertzien' # Posté le 07/07/2008 à 20:42:33
C++, C(encore)++ fort !
Avatar
Groupe : Membres
Ok je mets alors tout le code :

Code : C++
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
#include <SFML/Graphics.hpp>
#include <GL/gl.h>
#include <GL/glu.h>

#include <string>
#include <cmath>

#define Pi 3.1415926535897

void Draw();

double Angle = 0.f;
double Rayon = 200;

const unsigned int Hauteur = 400;
const unsigned int Largeur = 400;
const unsigned int Depth = 32;

int main()
{
	sf::RenderWindow App;
	sf::Event Event;
	

	{
		const sf::VideoMode Mode(Hauteur, Largeur, Depth);
		sf::WindowSettings Settings;
			Settings.StencilBits = 24;
			Settings.DepthBits = 8;
			Settings.AntialiasingLevel = 0;

		const std::string Titre = "[SFML - OpenGL] Cercle - Cosinus & Sinus Show !";

		const unsigned long Style = sf::Style::Close | sf::Style::Resize;

		App.Create(Mode, Titre, Style, Settings);
		App.SetBackgroundColor(sf::Color(0, 0, 0));
		App.SetFramerateLimit(60);
	}

	glMatrixMode( GL_PROJECTION );
    glLoadIdentity();
	glEnable (GL_BLEND);
	glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

	gluOrtho2D( 0, Hauteur, 0, Largeur);
	
	while(App.IsOpened())
	{		
		Draw();
		while(App.GetEvent(Event))
		{
			if(Event.Type == sf::Event::Closed)
			{
				App.Close();
			}
			if((Event.Type == sf::Event::KeyPressed)&&(Event.Key.Code == sf::Key::P))
			{
				App.Capture().SaveToFile("Cercle.png");
			}
		}
		App.Display();
		
		Angle = 0;

		sf::Sleep(0.008f);
	}
	return 0;
}

void Draw()
{
	double X = 0;
	double Y = 0;

	double Difference = 0;
	int Alpha = 0;

	glClear(GL_COLOR_BUFFER_BIT);

	glBegin(GL_POINTS);
		
	while(Angle <= 360.f)
	{

		X = Rayon * cos(Angle * Pi/180);
		Y = Rayon * sin(Angle * Pi/180);
		
		X += Hauteur / 2;
		Y += Largeur / 2;
		
		glColor3ub(255, 255, 255);
		glVertex2i(floor(X), floor(Y));

		Difference = ceil(X) - X;
		Alpha = static_cast<int>(Difference * 255);

		glColor4i(255, 255, 255, Alpha);
		glVertex2d(X, Y);

		Angle += 0.1f;
	}

	glEnd();
}

Mon problème : [FFMpeg] Installation
Notre équipe : C++ (au complet !)
SuperTux : Le jeu qui innove !
SFML - Anim : Ma classe C++ pour gérer les sprites SFML animés
 
Hors ligne Bachir ElMagnifico # Posté le 07/07/2008 à 22:53:31
http://info-crea.tuxfamily.org
Avatar
Groupe : Membres
remplace Pi/180 par Pi/180.0

Image utilisateur
cherche des partenaires - page de contact.
mon tuto sur OgreNewt: partie 1, partie 2, partie 3, partie 4
 
Hors ligne neuneutrinos # Posté le 08/07/2008 à 13:09:46
Avatar
Groupe : Membres
pi/180 c'est très bien car pi n'est pas un entier ;)

la mise à jour de l'écran est après la sauvegarde ;)

donc ton cercle ne doit pas être prit en compte ^^

essai de mettre App.Capture().SaveToFile("Cercle.png");
apres App.display();

:p il n'y a que les abriutis qui ne changent pas d'avis :p

notre équipe ;)

 
Hors ligne Hertzien' # Posté le 08/07/2008 à 15:15:15
C++, C(encore)++ fort !
Avatar
Groupe : Membres
No maintenant c'est réglé. Mais je suis chez un ami, donc je n'ai plus le code ! Je verrai cette après midi. Merci de vos réponses.

Mon problème : [FFMpeg] Installation
Notre équipe : C++ (au complet !)
SuperTux : Le jeu qui innove !
SFML - Anim : Ma classe C++ pour gérer les sprites SFML animés
 
Hors ligne Hertzien' # Posté le 09/07/2008 à 16:30:59
C++, C(encore)++ fort !
Avatar
Groupe : Membres
En fait, ce qui manquait c'est un glFlush(); en dernier dans la fonction Draw().
Donc maintenant je vais vous poster mon code :

Code : C++
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
#include <SFML/Graphics.hpp>
#include <GL/gl.h>
#include <GL/glu.h>

#include <string>
#include <cmath>

#define Pi 3.1415926535897

void Draw();

double Angle = 0.f;
double Rayon = 200;

const unsigned int Hauteur = 800;
const unsigned int Largeur = 600;
const unsigned int Depth = 32;

int main()
{
	sf::RenderWindow App;
	sf::Event Event;

	{
		const sf::VideoMode Mode(Hauteur, Largeur, Depth);
		sf::WindowSettings Settings;
			Settings.StencilBits = 24; // Valeur par défaut
			Settings.DepthBits = 8; // aussi
			Settings.AntialiasingLevel = 0; // aussi

		const std::string Titre = "[SFML - OpenGL] Cercle - Cosinus & Sinus Show !";

		const unsigned long Style = sf::Style::Close | sf::Style::Resize;

		App.Create(Mode, Titre, Style, Settings);
		App.SetBackgroundColor(sf::Color(0, 0, 0));
		App.SetFramerateLimit(60);
	}

	glMatrixMode( GL_PROJECTION );
    glLoadIdentity();
	glEnable (GL_BLEND);
	glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // Pour la transparence

	gluOrtho2D( 0, Hauteur, 0, Largeur);
	
	while(App.IsOpened())
	{		
		Draw();
		while(App.GetEvent(Event))
		{
			if(Event.Type == sf::Event::Closed)
			{
				App.Close();
			}
			if((Event.Type == sf::Event::KeyPressed)&&(Event.Key.Code == sf::Key::P))
			{
				App.Capture().SaveToFile("Cercle.png");
			}
		}
		App.Display();

		sf::Sleep(0.008f);
	}
	return EXIT_SUCCESS;
}

void Draw()
{
	
	double X = 0;
	double Y = 0;

	double Difference = 0;
	int Alpha = 0;

	glClear(GL_COLOR_BUFFER_BIT);

	glBegin(GL_POINTS);
		
	while(Angle <= 360.f)
	{

		X = Rayon * cos(Angle * Pi/180);
		Y = Rayon * sin(Angle * Pi/180);
		
		X += Hauteur / 2;
		Y += Largeur / 2;
		
		glColor3ub(255, 255, 255);
		glVertex2i(GLint(floor(X)), GLint(floor(Y)));

		Difference = X - floor(X);
		Alpha = static_cast<int>(Difference * 255);

		glColor4i(255, 255, 255, Alpha);
		glVertex2d(ceil(X), ceil(Y));

		Angle += 0.1f;
	}

	glEnd();
	glFlush();

	Angle = 0;
}


Je peux maintenant enregistrer les images et tout. Donc neuneutrinos, montre moi un exemple où tu as utilisé ce procédé dans la SDL ! Merci

Mon problème : [FFMpeg] Installation
Notre équipe : C++ (au complet !)
SuperTux : Le jeu qui innove !
SFML - Anim : Ma classe C++ pour gérer les sprites SFML animés
 
Hors ligne neuneutrinos # Posté le 09/07/2008 à 19:07:41
Avatar
Groupe : Membres
je vais te le passer ;)

:p il n'y a que les abriutis qui ne changent pas d'avis :p

notre équipe ;)

 
Hors ligne Hertzien' # Posté le 10/07/2008 à 14:44:17
C++, C(encore)++ fort !
Avatar
Groupe : Membres
Up !

Mon problème : [FFMpeg] Installation
Notre équipe : C++ (au complet !)
SuperTux : Le jeu qui innove !
SFML - Anim : Ma classe C++ pour gérer les sprites SFML animés
 
Hors ligne neuneutrinos # Posté le 10/07/2008 à 19:12:47
Avatar
Groupe : Membres
je pense que ton probleme est résolue non?

:p il n'y a que les abriutis qui ne changent pas d'avis :p

notre équipe ;)

 
Hors ligne Hertzien' # Posté le 10/07/2008 à 19:24:05
C++, C(encore)++ fort !
Avatar
Groupe : Membres
Oui, mais pour le lissage, montre moi ton code.

Mon problème : [FFMpeg] Installation
Notre équipe : C++ (au complet !)
SuperTux : Le jeu qui innove !
SFML - Anim : Ma classe C++ pour gérer les sprites SFML animés
 
Hors ligne neuneutrinos # Posté le 10/07/2008 à 20:35:40
Avatar
Groupe : Membres
c'est fait ;)

:p il n'y a que les abriutis qui ne changent pas d'avis :p

notre équipe ;)

 

Retour au forum "Langage C++" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 639 Zéros connectés | Requêtes SQL 7 requêtes | Temps de génération de la page : Total (SQL) 0.0456s (0.0235s)