help with SDL2 mandelbrot code lazarus / 39-Graphics ---------------------------------------------------------------------- ron77 · 2021-08-25 08:38 hello. I'm trying to make a Mandelbrot set to display on the window screen using the SDL2 library in Lazarus. i made a program (console) and copied a code originally made in C++ and tried to convert it to free pascal. the code compiles and runs but you get a black screen with nothing on it... anyone cares to help me find out what I'm doing wrong? I'm new to Lazarus or free pascal and to use the SDL2 library. here is the code: Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i program mandelbrot; {$mode objfpc}{$H+} uses SDL2;  //{$IFDEF UNIX}{$IFDEF UseCThreads}  //cthreads,  //{$ENDIF}{$ENDIF}  //Classes  //{ you can add units after this }; var   //window:SDL_Window@   // Renderer:SDL_Renderer@;   // Event:SDL_Event@;   WIDTH:integer = 1000;   HEIGHT:integer = 1000;    min_num:currency = -2.84;   max_num:currency = 1.0;   factor:currency = 1;   MAX_ITERATIONS:integer = 200;   x, y, i, n:integer;   a,b,ai,bi,a1,b1:currency;    counter, bright,red,green,blue:integer;     window: PSDL_Window;     Renderer: PSDL_Renderer; function map( value, in_min, in_max, out_min, out_max:currency):currency;begin    map:= (value - in_min) * (out_max - out_min) / (in_max - out_max) + out_min;end;    procedure main;begin//var//     SDL_Init(SDL_INIT_EVERYTHING);       // full set up  Window := SDL_CreateWindow('Window', 50, 50, 500, 500, SDL_WINDOW_SHOWN);  if Window = nil then Halt;   Renderer := SDL_CreateRenderer(Window, -1, 0);  if Renderer = nil then Halt;     if SDL_CreateWindowAndRenderer(1920, 1080, SDL_WINDOW_RESIZABLE, @Window, @Renderer) <> 0    then Halt;        SDL_RenderSetLogicalSize(Renderer, WIDTH, HEIGHT);     counter := 0;     while True do         max_num -= 0.1 * factor;        min_num += 0.15 * factor;        factor *= 0.9349;        MAX_ITERATIONS += 5;           SDL_RenderPresent(Renderer);         for x:= 0 to WIDTH do            for y := 0 to WIDTH do                    a := map(x, 0, WIDTH, min_num, max_num);                 b := map(y, 0, WIDTH, min_num, max_num);                  ai := a;                 bi := b;                 n := 0;                   for i := 0 to MAX_ITERATIONS do                    begin                    a1 := a * a - b * b;                    b1 := 2 * a * b;                     a := a1 + ai;                    b := b1 + bi;                     if ((a + b) > 2) then                        begin                      break;                        end;                       n := n +1;                bright := Trunc(map(n, 0, MAX_ITERATIONS, 0, 255));               if ((n = MAX_ITERATIONS)) then                   begin                 bright := 0;                   end;                   red := Trunc(map(bright * bright, 0, 6502, 0, 255));                green := bright;                blue := Trunc(map(sqrt(bright), 0, sqrt(255), 0, 255));                 SDL_SetRenderDrawColor(Renderer, red, green, blue, 255);                SDL_RenderDrawPoint(Renderer, x, y);             end;          end;end;  begin main; end.     here is the original code in C++ that works Code: C++  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i #include  #include #include #include  int WIDTH = 1000;int HEIGHT = 1000; long double min_num = -2.84;long double max_num = 1.0;long double factor = 1;int MAX_ITERATIONS = 200;   long double map(long double value, long double in_min, long double in_max, long double out_min, long double out_max){    return (value - in_min) * (out_max - out_min) / (in_max - out_max) + out_min;}    int main(int argc, char* argv[]){    SDL_Init(SDL_INIT_EVERYTHING);     SDL_Window* window;    SDL_Renderer* Renderer;    SDL_Event Event;      SDL_CreateWindowAndRenderer(1920, 1080, SDL_WINDOW_RESIZABLE, &window, &Renderer);    //    int SDL_CreateWindowAndRenderer(1440, 900, &window, &Renderer);    SDL_RenderSetLogicalSize(Renderer, WIDTH, HEIGHT);     int counter = 0;     while (1) {         max_num -= 0.1 * factor;        min_num += 0.15 * factor;        factor *= 0.9349;      MAX_ITERATIONS += 5;           SDL_RenderPresent(Renderer);        //        SDL_RendererPresent(Renderer);        for (int x = 0; x < WIDTH; x++) {            for (int y = 0; y < WIDTH; y++) {               if (SDL_PollEvent(&Event) && Event.type == SDL_QUIT) {                  return 0;                }                if (GetKeyState('Q') & 0x8000) {                    return 0;                }               long double a = map(x, 0, WIDTH, min_num, max_num);                long double b = map(y, 0, WIDTH, min_num, max_num);                 long double ai = a;                long double bi = b;               int n = 0;                   for (int i = 0; i < MAX_ITERATIONS; i++) {                     long double a1 = a * a - b * b;                  long double b1 = 2 * a * b;                     a = a1 + ai;                  b = b1 + bi;                     if ((a + b) > 2) {                       break;                    }                       n++;                }                int bright = map(n, 0, MAX_ITERATIONS, 0, 255);                 if ((n == MAX_ITERATIONS)) {                    bright = 0;                 }                  int red = map(bright * bright, 0, 6502, 0, 255);                int green = bright;                int blue = map(sqrt(bright), 0, sqrt(255), 0, 255);                 SDL_SetRenderDrawColor(Renderer, red, green, blue, 255);                SDL_RenderDrawPoint(Renderer, x, y);           }          }         counter++;    }       return 0;}  here is an example of the desired output: ---------------------------------------------------------------------- nouzi · 2021-08-25 10:02 Are you looking for something like this? https://youtu.be/ARFC6Kf6Tnw ---------------------------------------------------------------------- ron77 · 2021-08-25 10:08 no... I'm looking for something like this: https://youtu.be/KnCNfBb2ODQ ---------------------------------------------------------------------- nouzi · 2021-08-25 10:27 See this , It might be a good starting point https://wiki.freepascal.org/TAChart_Tutorial:_ColorMapSeries,_Zooming