gvsu/cs677/final/mpi-fractals.cc
josh 83ae452669 updated
git-svn-id: svn://anubis/gvsu@315 45c1a28c-8058-47b2-ae61-ca45b979098e
2008-12-06 20:04:20 +00:00

88 lines
1.8 KiB
C++

/*
* Josh Holtrop
* 2008-12-11
* barebones SDL program
*/
#include <SDL/SDL.h>
#include <mpi.h>
#include <iostream>
using namespace std;
#define PROGNAME "Josh's CS677 Final : MPI Fractal Generator"
bool createWindow(int width, int height,
SDL_Surface ** screen, Uint32 ** pixels);
void getSizes(int * rank, int * size);
int main(int argc, char * argv[])
{
int width = 800;
int height = 600;
int my_rank;
int world_size;
SDL_Surface * screen;
Uint32 * pixels;
MPI_Init(&argc, &argv);
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
*pixels++ = (((x * 255 / width) & 0xFF) << 8)
+ ((y * 255 / height) & 0xFF);
}
}
SDL_UpdateRect(screen, 0, 0, 0, 0);
bool going = true;
SDL_Event event;
while (going && SDL_WaitEvent(&event) != 0)
{
switch (event.type)
{
case SDL_QUIT:
going = false;
break;
case SDL_KEYDOWN:
if (event.key.keysym.sym == SDLK_q)
going = false;
break;
}
}
MPI_Finalize();
return 0;
}
bool createWindow(int width, int height,
SDL_Surface ** screen, Uint32 ** pixels)
{
if (SDL_Init(SDL_INIT_VIDEO))
{
cerr << "Failed to initialize SDL!" << endl;
return false;
}
atexit(SDL_Quit);
if (!(*screen = SDL_SetVideoMode(width, height, 32, 0)))
{
cerr << "Failed to set video mode!" << endl;
return false;
}
SDL_WM_SetCaption(PROGNAME, PROGNAME);
*pixels = (Uint32 *) (*screen)->pixels;
return true;
}
void getSizes(int * rank, int * size)
{
MPI_Comm_rank(MPI_COMM_WORLD, rank);
MPI_Comm_size(MPI_COMM_WORLD, size);
}