![]() |
How to create a framebuffer for use of external rendering - Printable Version +- Tilengine - The 2D retro graphics engine forum (http://tilengine.org/forum) +-- Forum: English forums (http://tilengine.org/forum/forumdisplay.php?fid=3) +--- Forum: Support (http://tilengine.org/forum/forumdisplay.php?fid=7) +--- Thread: How to create a framebuffer for use of external rendering (/showthread.php?tid=2304) |
How to create a framebuffer for use of external rendering - raziel - 03-01-2024 as title suggests, I was following the "External Rendering" guide on the documentation site, however, when following it in v 2.15.2 it doesn't seem to work, owing to the provided code snippet: const int hres = 400; const int vres = 240;
const int pitch = hres * sizeof(uint32_t);
void* framebuffer;
/* init and set framebuffer */
TLN_Init (hres, vres, 2, 80, 0);
framebuffer = malloc (pitch * vres);
TLN_SetRenderTarget (framebuffer, pitch);However on my end (visual studio 2022), TLN_SetRenderTarget's first argument (framebuffer) expects a uint8_t, not a void*, and changing framebuffer to that datatype causes malloc to break, as malloc returns a void*. so what is it you're actually meant to do? RE: How to create a framebuffer for use of external rendering - megamarc - 03-01-2024 Hi, In plain C (not C++), void* pointer means "anything goes", it's like a placeholder that accepts any data. malloc won't break, it just returns a void* pointer, it doesn't care what are you using it for. Remember that C and C++ are unmanaged languages so memory management is up to the app developer. What's important is that you declare framebuffer with a datatype that is meaningful for the kind of access/arithmetic you're going to perform on it. Tilengine doesn't care as long as it encodes a 32-bit ARGB pixel format. C++ is more strict with pointer matching than C, and different types must be cast explicitly. So if you're declaring framebuffer with a different datatype than uint8_t*, you must cast it: Code: TLN_SetRenderTarget ((uint8_t*)framebuffer, pitch); Regards, |