Bisqwit's Portal Rendering Engine, written in C, updated to use SDL 2 instead of SDL 1.2 and C99 standard. The code is featured and talked about in his video on making a Doom style pseudo-3D engine All files and credit goes to Bisqwit
- Included
inttypes.h
header file.
#include <inttypes.h>
- Included
SDL2/SDL.h
header file instead ofSDL.h
#include <SDL2/SDL.h> // #include <SDL.h>
- Changed
unsigned
integer types touint32_t
.
//static unsigned NumSectors = 0;
static uint32_t NumSectors = 0;
- Changed
int
integers toint32_t
.
// int n, m, NumVertices = 0;
int32_t n, m, NumVertices = 0;
- Enforced const-correctness where possible and necessary.
- Applied the
restrict
keyword to pointers that didn't alias similar data.
const struct sector *const restrict sect = §ors[player.sector];
const struct xy *const restrict vert = sect->vertex;
- Changed certain SDL-oriented functions to use their SDL2 counterparts.
- Changed certain SDL code to SDL2 equivalent code.
//SDL_Flip(surface);
SDL_UpdateTexture(texture, NULL, surface->pixels, surface->pitch);
SDL_RenderClear(renderer);
SDL_RenderCopy(renderer, texture, NULL, NULL);
SDL_RenderPresent(renderer);
This repository is only for the updated source code. The map files and textures are available at Bisqwit's personal site
To build, you need the SDL2 sdk, a C99 or C11 compliant compiler, and to include the C standard library math library.
the build code I used for quick build:
gcc -Wall -Wextra -std=c99 -s -O2 prender.c -o bisqwitRT_engine -lSDL2 -lm