Auf dieser Seite findest du verschiedene Beispiele um Random-Texturen zu generieren. Dabei werden Speicherbereiche mit (pseudo-)zufälligen Werten gefüllt.
Beispiel 1: rand() aus der stdlib
Beispiel 2: LFSR-Logik als Random-Funktion
Beispiel-Quelltext:
// ptr points to a memory buffer of size width * height * sizeof(unsigned int) static void genRandom1(unsigned int *ptr, int width, int height) { int x,y; unsigned int a,r,g,b; for (y = 0; y < height; ++y) { for (x = 0; x < width; ++x) { // This example uses three calls of rand(). You should better use one // call to generate 24 random bits in one step. r = rand() & 0xff; g = rand() & 0xff; b = rand() & 0xff; a = 0xff; *ptr++ = (r << 24) | (g << 16) | (b << 8) | a; // set color of RGBA8888 pixel } } } // returns 16 random bits unsigned int rand_lfsr() { static unsigned short lfsr = 0xaffecafe; static unsigned bit; bit = ((lfsr >> 0) ^ (lfsr >> 2) ^ (lfsr >> 3) ^ (lfsr >> 5) ) & 1; lfsr = (lfsr >> 1) | (bit << 15); return lfsr; } // ptr points to a memory buffer of size width * height * sizeof(unsigned int) static void genRandom2(unsigned int *ptr, int width, int height) { int x,y; for (y = 0; y < height; ++y) { for (x = 0; x < width; ++x) { *ptr++ = (rand_lfsr()<<16) | rand_lfsr(); // 32 random bits for an RGBA8888 pixel } } }
Gefällt dir dieser Artikel zur Generierung von zufälligen Texturen? Hast du Anregungen, Vorschläge oder einen Fehler im Sourcecode gefunden? Schreibe doch einen Kommentar...
Diese Website benutzt Cookies. 🍪 Wenn Sie die Website weiter nutzen, stimmen Sie der Verwendung von Cookies zu. Mehr Infos