Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include <GL/glut.h>
- #include <stdio.h>
- #include <string.h>
- int *pv, *pn; // variabile globale, pointeri la n si v[]
- void display() {
- char numar[3];
- int i, j;
- float dx, ky, max;
- dx = 1.9 / *pn; // spatiul pe x pt un dreptunghi - dx
- // determinarea valorii maxime din vector
- max = *pv;
- for(i = 1; i < *pn; i++)
- if(max < *(pv + i))
- max = *(pv + i);
- ky = 1.8 / max; // factorul de scalare pe y, lui max ii corespunde 1.8
- glClearColor(1.0f, 1.0f, 1.0f, 0.05f);
- glClear(GL_COLOR_BUFFER_BIT);
- for(i = 0; i < *pn; i++){
- glBegin(GL_QUADS);
- glColor3f(0.0f, 0, 1.0f);
- glVertex2f(-0.95 + i * dx, -0.9);
- glVertex2f(-0.95 + (i + 1) * dx - 0.02, -0.9);
- glVertex2f(-0.95 + (i + 1) * dx - 0.02, -0.9 + *(pv+i) * ky );
- glVertex2f(-0.95 + i * dx, -0.9 + *(pv+i) * ky );
- glEnd();
- // afisare etichete text
- sprintf(numar,"%d",*(pv+i));
- glRasterPos2f(-0.95 + i * dx + dx / 2, -0.9 + *(pv+i) * ky + 0.05);
- for(j = 0; j < strlen(numar); j++)
- glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_10,numar[j]);
- }
- glFlush();
- }
- int main(int argc, char** argv){
- int i, n, v[20];
- pv = v;
- pn = &n;
- printf("Nr. de elemente:");
- fflush(stdout);
- scanf("%d", &n);
- for(i = 0; i < n; i++){
- printf("v[%d] = ", i);
- fflush(stdout);
- scanf("%d", &v[i]);
- }
- glutInit(&argc, argv);
- glutCreateWindow("Testare mod grafic OpenGL ");
- glutInitWindowSize(320, 320);
- glutInitWindowPosition(50, 50);
- glutDisplayFunc(display);
- glutMainLoop();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement