[quote name='Servant of the Lord' timestamp='1351989728' post='4997034']
[quote name='DarkHorseKnight' timestamp='1351938434' post='4996816']
Your drawing a rectangle for the water right then altering the pixels on that rectangle how?[/quote]
No, I'm creating an empty surface, then altering the pixels on that surface.
I then draw the altered surface onto the screen.
[quote]Why are we comparing surfaces?[/quote]
I'm not comparing surfaces, I'm altering one surface (updating it every 1/10th of a second), and drawing it onto the screen (a second surface) every frame.
[quote]How are you setting the area of which the pixels values can be gotten and placed elsewhere?[/quote]
I'm not setting the area, I'm passing in the surface to the WritePixel() and ReadPixel() functions. I'm getting and reading pixels from a surface.
Actually, to be more exact, I didn't do any pixel-reading at all, just writing.
In SDL, a "surface" is a image that exists in memory. I'm editing that image; I'm not editing the screen. I'm editing the image, then I'm drawing the image onto the screen.
Quote a line of code, then ask about any specific line of code you have questions about - make sure your specify exactly what part you don't understand.
[/quote]
Okay so [CODE]return pixels[offset + x];[/CODE] how does return of pixels[offset + x]; work exactly?
Why are you locking surfaces to access pixels to stop tearing or something?
this function below makes a rect filling it with a user defined color yes?
[CODE]
void DrawRectangle(SDL_Surface *destination, const SDL_Color &color, SDL_Rect *rect = NULL)
{SDL_FillRect(destination, rect, SDL_MapRGB(destination->format, color.r, color.g, color.b));}
[/CODE]
this code is fairly hard to grasp the technical concepts [CODE]
SDL_Surface *CreateEmptySurface(int width, int height, SDL_Surface *surfaceToCompareTo){ SDL_Surface *newSurface = SDL_CreateRGBSurface(surfaceToCompareTo->flags, int width, int height, surfaceToCompareTo->format->BitsPerPixel, surfaceToCompareTo->format->Rmask, surfaceToCompareTo->format->Gmask, surfaceToCompareTo->format->Bmask, surfaceToCompareTo->format->Amask);
if(!newSurface) {std::cerr << "CreateEmptySurface() - Something went wrong creating a " << width << "x" << height << " surface.\n" << " Error: " << SDL_GetError() << std::endl;} //Let's start off filling it with a solid color, like solid white. DrawRectangle(newSurface, SDL_Color(255, 255, 255)); return newSurface;}
[/CODE]
What does this do from a technical point of view
[CODE]SDL_Surface *waterImage = CreateEmptySurface(50, 50, screen);[/CODE]
This code below is oddly written what does that all mean ?
[CODE]void MakeWaterSurface(SDL_Surface *surface, unsigned int frame){ //We only have 20 frames, so keep within range. frame %= 20; int offset = frame; if(offset >= 10) { //0 1 2 3 4 5 6 7 8 9 10 9 8 7 6 5 4 3 2 1 offset = (10 - (offset - 10)); } SDL_Color colors[] = {SDL_Color(100, 150, 190),SDL_Color(100, 160, 180),SDL_Color(100, 170, 170),SDL_Color(100, 180, 160),SDL_Color(100, 190, 150), SDL_Color(100, 190, 170),SDL_Color(100, 190, 190),SDL_Color(100, 190, 210),SDL_Color(100, 190, 230),SDL_Color(100, 220, 250)}; for(int y = 0; y < surface->height; y++) { for(int x = 0; x < surface->height; x++) { //I'm coding blind without a compiler, so I have completely no idea if this will work or not. int waveDepth = ((y + offset) % 10); int waveHorizontalOffset = ((x + (offset/3)) % 20); int waveVerticalOffset = ((x + waveHorizontalOffset) + offset); unsigned colorIndex = (waveDepth + waveVerticalOffset) % 10; WritePixel(x, y, colors[colorIndex], surface); } }}[/CODE]
Theres still more for me to look at but this is as far as I've gotten in trying to understand not used any of this yet.
[quote][/quote]