Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SDL2/SDL.h>
- #include <iostream>
- #include <cstdlib>
- #include <ctime>
- #include <libnoise/noise.h>
- const int width = 640;
- const int height = 480;
- float x = width / 2;
- float y = height / 2;
- double map( double x, double in_min, double in_max, double out_min, double out_max) {
- return out_min + (( out_max - out_min) * (x - in_min) / (in_max - in_min));
- }
- int main(int argc, char *argv[])
- {
- noise::module::Perlin myNoise;
- SDL_Window *window = nullptr;
- SDL_Renderer *renderer = nullptr;
- if(SDL_Init(SDL_INIT_VIDEO) < 0 )
- std::cout << "Video Initialization Error: " << SDL_GetError() << std::endl;
- else
- {
- window = SDL_CreateWindow("SDL Perlin Noise", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height, SDL_WINDOW_SHOWN);
- renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
- if (window == NULL || renderer == NULL)
- std::cout << "Window creation error: " << SDL_GetError() << std::endl;
- else
- {
- bool isRunning = true;
- SDL_Event ev;
- SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_NONE);
- double n = 0; // time step
- while(isRunning)
- {
- while(SDL_PollEvent(&ev) != 0)
- {
- if(ev.type == SDL_QUIT)
- isRunning = false;
- }
- double yoff = 0;
- double xoff = 0;
- SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0);
- SDL_RenderClear(renderer);
- for (int x = 0; x < width; x++){
- yoff = 0;
- for (int y = 0; y < height; y++){
- int bright = map(myNoise.GetValue(xoff , yoff, n), -1.0, 1.0, 0, 255);
- SDL_SetRenderDrawColor(renderer, bright, bright, bright, 255);
- SDL_RenderDrawPoint(renderer, x, y);
- yoff += 0.01;
- }
- xoff += 0.01;
- }
- n += 0.01;
- SDL_RenderPresent(renderer);
- }
- }
- }
- SDL_DestroyWindow(window);
- SDL_Quit();
- std::cout << "Good Bye.\n";
- return(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment