Image noise: Difference between revisions
Content added Content deleted
m (Moved "task" tag to start of document) |
(Perl 6 entry) |
||
Line 1,734: | Line 1,734: | ||
[[Image_Noise/OCaml/OpenGL|Equivalent]] of the C-OpenGL method. |
[[Image_Noise/OCaml/OpenGL|Equivalent]] of the C-OpenGL method. |
||
=={{header|Perl 6}}== |
|||
We'll use minimal mappings for SDL2. The resulting code is embarrassingly slow, but it's better than nothing. |
|||
<lang perl6>use NativeCall; |
|||
class SDL_Window is repr('CStruct') {} |
|||
class SDL_Renderer is repr('CStruct') {} |
|||
my ($w, $h) = 320, 240; |
|||
my SDL_Window $window; |
|||
my SDL_Renderer $renderer; |
|||
constant $sdl-lib = 'libSDL2'; |
|||
constant SDL_INIT_TIMER = 0x00000001; |
|||
constant SDL_INIT_VIDEO = 0x00000020; |
|||
constant SDL_WINDOWPOS_UNDEFINED_MASK = 0x1FFF0000; |
|||
constant SDL_WINDOW_SHOWN = 0x00000004; |
|||
sub SDL_Init(int32 $flag) returns int32 is native($sdl-lib) {*} |
|||
sub SDL_Quit() is native($sdl-lib) {*} |
|||
sub SDL_CreateWindow(Str $title, int $x, int $y, int $w, int $h, int32 $flag) returns SDL_Window is native($sdl-lib) {*} |
|||
sub SDL_CreateRenderer(SDL_Window $, int $, int $) returns SDL_Renderer is native($sdl-lib) {*} |
|||
sub SDL_SetRenderDrawColor(SDL_Renderer $, int $r, int $g, int $b, int $a) returns Int is native($sdl-lib) {*} |
|||
sub SDL_RenderClear(SDL_Renderer $) returns Int is native($sdl-lib) {*} |
|||
sub SDL_RenderDrawPoint( SDL_Renderer $, int $x, int $y ) returns Int is native($sdl-lib) {*} |
|||
sub SDL_RenderPresent(SDL_Renderer $) is native($sdl-lib) {*} |
|||
sub render { |
|||
SDL_SetRenderDrawColor($renderer, 0, 0, 0, 0); |
|||
SDL_RenderClear($renderer); |
|||
SDL_SetRenderDrawColor($renderer, 255, 255, 255, 0); |
|||
for ^$w X ^$h -> $i, $j { |
|||
SDL_RenderDrawPoint( $renderer, $i, $j ) if rand < .5; |
|||
} |
|||
SDL_RenderPresent($renderer); |
|||
} |
|||
SDL_Init(SDL_INIT_VIDEO); |
|||
$window = SDL_CreateWindow( |
|||
"some white noise", |
|||
SDL_WINDOWPOS_UNDEFINED_MASK, SDL_WINDOWPOS_UNDEFINED_MASK, |
|||
$w, $h, |
|||
SDL_WINDOW_SHOWN |
|||
); |
|||
$renderer = SDL_CreateRenderer( $window, -1, 1 ); |
|||
for ^10 { |
|||
my $then = now; |
|||
render(); |
|||
note "{1 / (now - $then)} fps"; |
|||
} |
|||
END { SDL_Quit() }</lang> |
|||
=={{header|Pascal}}== |
=={{header|Pascal}}== |