i want help modifying this code please.
1. i want to reduce the number of generated pixels to 400x200.
2. i want it to generate with a scroll bar such that i can scroll back and forth through the generations (instead of it generating one by one with 'g' key, and not being able to view the previous images.
I also want to know if there is any way to make the program play the generationss like a video. (instead of using the scroll bar metioned above)
i am going to be using 'C language' with the VS2010 Express compiler for compiling.
i cannot seem to find a complete enough reference file on the internet for opengl's glut.h/glut32.dll.
#include <stdlib.h>
#include <time.h>
#include <gl/glut.h>
#pragma comment(linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
#define WINDOW_WIDTH 512
#define WINDOW_HEIGHT 512
void init ();
void display (void);
void mouse (int button, int state, int x, int y);
void keyboard (unsigned char key, int x, int y);
void centerOnScreen ();
int window_x;
int window_y;
char *window_title = "Image Generator";
int full_screen = 0;
void generateImage ();
GLubyte buffer[WINDOW_WIDTH][WINDOW_HEIGHT][3];
void init ()
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glShadeModel(GL_FLAT);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
srand (time(NULL));
generateImage();
}
void display (void)
{
glClear(GL_COLOR_BUFFER_BIT);
glDrawPixels(WINDOW_WIDTH, WINDOW_HEIGHT, GL_RGB,
GL_UNSIGNED_BYTE, buffer);
glutSwapBuffers ();
}
void mouse (int button, int state, int x, int y)
{
if (state == GLUT_DOWN)
{
generateImage ();
glutPostRedisplay ();
}
}
void keyboard (unsigned char key, int x, int y)
{
switch (key)
{
case 'g':
generateImage ();
glutPostRedisplay ();
break;
case 27:
exit (0);
}
}
void centerOnScreen ()
{
window_x = (glutGet (GLUT_SCREEN_WIDTH) - WINDOW_WIDTH)/2;
window_y = (glutGet (GLUT_SCREEN_HEIGHT) - WINDOW_HEIGHT)/2;
}
void generateImage ()
{
int i, j;
for (i = 0; i < WINDOW_WIDTH; i++)
{
for (j = 0; j < WINDOW_HEIGHT; j++)
{
buffer[i][j][0] = (GLubyte) (rand () % 256);
buffer[i][j][1] = (GLubyte) (rand () % 256);
buffer[i][j][2] = (GLubyte) (rand () % 256);
}
}
}
void main (int argc, char **argv)
{
glutInit(&argc, argv);
glutInitWindowSize (WINDOW_WIDTH, WINDOW_HEIGHT);
centerOnScreen ();
glutInitWindowPosition (window_x, window_y);
glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE);
glutCreateWindow (window_title);
if (full_screen)
glutFullScreen ();
init();
glutDisplayFunc (display);
glutKeyboardFunc (keyboard);
glutMouseFunc (mouse);
glutMainLoop();
}
Thanks.