PDA

View Full Version : plotting a basic 2d graph



dean360
06-13-2017, 08:10 AM
I'm really desperate for some help.
I'm extreamly new to opengl and i'm trying to do the following.
create a window with a simple 2d graph created from a dynamic amount of points.
i have a connected list of points structure storing all the y and x values. plus a flag for a warrning i need to print next to a point on the graph that's flagged.
i'm writing in VS 2017 in "pure" C language.
i need to graph to look somthing like this and to close on left mouse click:
2388



here's my code so far:


int main(int argc, char** argv)
{
glutInit(&argc, argv); //init
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); //Color mode
glutInitWindowSize(500, 500); //Window size
glutInitWindowPosition(0, 0); //Window position (from upper left corner)
glutCreateWindow("Test"); //Create window with title
glutDisplayFunc(display); //Present default display
glutMainLoop(); //Start loop
return 0;
}
void drawText(const char *message, float x, float y, char color, char font)
{
// Color - must be before Raster.
switch (color)
{
case 'r':
glColor3f(0.4, 0.0, 0.0); // 3f -> 3 floats, can also be 3d,3i,3s,3b.
break;
case 'g':
glColor3f(0.0, 0.4, 0.0); // 3f -> 3 floats, can also be 3d,3i,3s,3b.
break;
case 'b':
glColor3f(0.0, 0.0, 0.4); // 3f -> 3 floats, can also be 3d,3i,3s,3b.
break;
default:
glColor3f(0.0, 0.0, 0.0); // 3f -> 3 floats, can also be 3d,3i,3s,3b.
break;
}

//Position
glRasterPos2f(x, y);

//write using bitmap and stroke chars
if (font == 24)
{
while (*message)
{
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, *message++);
}
}
if (font == 10)
{
while (*message)
{
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_10, *message++);
}
}
}
void display(void)
{
/* set clear color to black (red,*green,*blue,*alpha) range*[0,1]*/
glClearColor(0.9, 0.9, 0.9, 0);
/* clear window */
glClear(GL_COLOR_BUFFER_BIT);

/* graph square */
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_POLYGON);
glVertex2f(-0.7, -0.7);
glVertex2f(-0.7, 0.7);
glVertex2f(0.7, 0.7);
glVertex2f(0.7, -0.7);
glEnd();

// Axis
glLineWidth(4);
glColor3f(0, 0, 0);
glBegin(GL_LINES);
glVertex2f(-0.7, -0.7);
glVertex2f(-0.7, 0.7);
glVertex2f(0.7, -0.7);
glVertex2f(-0.7, -0.7);
glEnd();

// Text
drawText("y\0", -0.7, 0.75, 'd', 24);
drawText("x\0", 0.75, -0.7, 'd', 24);
drawText(MESSAGE,-0.4,0.8,'g',24);

/* flush GL buffers */
glFlush();
}


i'd really appriciate any help i'm lost.

OceanJeff40
06-15-2017, 06:32 PM
Where are you lost? What does the program do when it runs?

Jeff