Comment dessiner une onde sinusoïdale dans OpenGL_POINTS Fonction à l'aide de C++
Je suis censé tirer une onde sinusoïdale (comme celui dans l'image) à l'aide de OpenGL_POINTS. Cependant, après être passé par ma boucle dans le code, je reçois juste un point de la vague.
Voici mon code.
#include "stdafx.h"
#include <iostream>
#include <gl\GLUT.h>
#include <math.h>
using namespace std;
void RenderSineWave()
{
int i;
float x,y;
glClearColor(0.0, 0.0, 0.0, 1.0); //clear background with black
glClear(GL_COLOR_BUFFER_BIT);
glPointSize(10);
glColor3f(1.0,0.0,0.0);
for(i=0;i<361;i=i+5)
{
x = (float)i;
y = 100.0 * sin(i *(6.284/360.0));
glBegin(GL_POINTS);
glVertex2f(x,y);
glEnd();
glFlush();
glutPostRedisplay();
}
}
void main(int argc, char** argv)
{
glutInit(&argc,argv);
glutCreateWindow("SineWave.cpp");
glutDisplayFunc(RenderSineWave);
glutMainLoop();
}
ne pas appeler glutpostredisplay chaque fois que vous effectuez le rendu d'un point, dites-moi si cela fonctionne
OriginalL'auteur user2875230 | 2013-10-15
Vous devez vous connecter pour publier un commentaire.
Ajouter cette ligne avant
glutMainLoop();
dire à OpenGL pour dessiner entre-1
et365
dansx
, et entre-200
et200
dansy
(la valeur par défaut est trop petit pour voir la totalité de la forme):Aussi supprimer la ligne
glutPostRedisplay();
, sinon, votre écran peut clignoter.OriginalL'auteur memo1288
Essayer de définir une projection raisonnable de la matrice:
OriginalL'auteur genpfault