I am trying to make a grid of squares that resembles one large square. I wrote the code such that the height and width of the large square is constant and the number of smaller squares can be changed to increase " resolution". But all I’m getting is a white screen.Pls go through my code and help me figure this out.
Shapes.h
#include "glut.h"
#include <math.h>
void polygon(int v1, int v2, int v3 , int v4, float x, float y);
void Draw();
shapes.cpp
#include "Shapes.h"
#include"glut.h"
#include <stdio.h>
int x,y;
int res=25;
float hres=y/res;
float wres=x/res;
void polygon(int v1, int v2, int v3 , int v4, float x, float y) {
float vertices[][2]={{x, y+hres}, {x+wres, y+hres}, {x+wres, y}, {x, y}};
glBegin(GL_QUADS);
glVertex2fv(vertices[v1]);
glVertex2fv(vertices[v2]);
glVertex2fv(vertices[v3]);
glVertex2fv(vertices[v4]);
glEnd();
}
void Draw() {
int id = 1;
for(int y = 0; y < 5; y+=hres)
{
for(int x = 0; x < 5; x+=wres)
{
glPushName(id);
glColor3f(1.0, 0.0, 1.0); //Magenta
polygon(0,1,2,3,x,y);
/*glColor3f(1.0, 0.0, 0.0); //Red
polygon(4,5,6,7,x,y);
glColor3f(0.0, 1.0, 1.0); //Cyan
polygon(1,5,6,2,x,y);
glColor3f(1.0, 1.0, 0.0); //Yellow
polygon(0,4,7,3,x,y);
glColor3f(0.0, 0.0, 1.0); //Blue
polygon(3,2,6,7,x,y);
glColor3f(0.0, 1.0, 0.0); //Green
polygon(0,1,5,4,x,y);*/
id = id+1;
glPopName();
}
}
glFlush();
}
main.cpp
#include"glut.h"
#include<math.h>
#include "zpr.h"
#include <stdio.h>
#include "Shapes.h"
double rotate_y=0;
double rotate_x=0;
double rotate_z=0;
void RotateKeys( int key, int x, int y ) {
// Right arrow - increase rotation by 5 degree
if (key == GLUT_KEY_UP)
rotate_z += 5;
// Left arrow - decrease rotation by 5 degree
else if (key == GLUT_KEY_DOWN)
rotate_z -= 5;
else if (key == GLUT_KEY_LEFT)
rotate_y += 5;
else if (key == GLUT_KEY_RIGHT)
rotate_y -= 5;
else if (key == GLUT_KEY_PAGE_UP)
rotate_x -= 5;
else if (key == GLUT_KEY_PAGE_DOWN)
rotate_x += 5;
// Request display update
glutPostRedisplay();
}
void Initialize() {
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glOrtho(-5.0, 5.0, -5.0, 5.0, -5.0, 5.0);
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
glRotatef( rotate_x, 1.0, 0.0, 0.0 );
glRotatef( rotate_y, 0.0, 1.0, 0.0 );
glRotatef( rotate_z, 0.0, 0.0, 1.0 );
glTranslatef(-.5,-.5,0);
Draw();
// glFlush();
glutSwapBuffers();
glutPostRedisplay();
}
int main(int iArgc, char** cppArgv) {
glutInit(&iArgc, cppArgv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(600, 600);
glutInitWindowPosition(200, 200);
glutCreateWindow("PIXELS");
Initialize();
glEnable(GL_DEPTH_TEST);
glutDisplayFunc(display);
glutSpecialFunc(RotateKeys);
glutMainLoop();
return 0;
}