Image noise: Difference between revisions

Content added Content deleted
(Added Wren)
Line 2,021: Line 2,021:
=={{header|Nim}}==
=={{header|Nim}}==


==Using OpenGL ===

{{trans|C}}
{{libheader|OpenGL}}

<lang Nim>import times

import opengl
import opengl/glut

const
W = 320
H = 240
SLen = W * H div sizeof(int)

var
frame = 0
bits: array[SLen, uint]
last, start: Time

#---------------------------------------------------------------------------------------------------

proc render() {.cdecl.} =
## Render the window.

var r = bits[0] + 1
for i in countdown(bits.high, 0):
r *= 1103515245
bits[i] = r xor bits[i] shr 16

glClear(GL_COLOR_BUFFER_BIT)
glBitmap(W, H, 0, 0, 0, 0, cast[ptr GLubyte](bits.addr))
glFlush()

inc frame
if (frame and 15) == 0:
let t = getTime()
if t > last:
last = t
echo "fps: ", frame.float / (t - start).inSeconds.float

#---------------------------------------------------------------------------------------------------

proc initGfx(argc: ptr cint; argv: pointer) =
## Initialize OpenGL rendering.

glutInit(argc, argv)
glutInitDisplayMode(GLUT_RGB)
glutInitWindowSize(W, H)
glutIdleFunc(render)
discard glutCreateWindow("Noise")
glutDisplayFunc(render)
loadExtensions()

#———————————————————————————————————————————————————————————————————————————————————————————————————

var argc: cint = 0
initGfx(addr(argc), nil)
start = getTime()
last = start
glutMainLoop()</lang>


===Using library "Rapid"===
{{libheader|rapid}}
{{libheader|rapid}}

Unfortunately, these examples no longer work for some reason.


Naive implementation:
Naive implementation: