Skip to content

Instantly share code, notes, and snippets.

@hetzge
Created August 31, 2024 19:49
Show Gist options
  • Select an option

  • Save hetzge/add42161a60cae85ec76e6538946f971 to your computer and use it in GitHub Desktop.

Select an option

Save hetzge/add42161a60cae85ec76e6538946f971 to your computer and use it in GitHub Desktop.
Simple triangle with Nim, Raylib, rlgl
import rlgl, raylib
proc main =
setConfigFlags(flags(ConfigFlags.WindowResizable))
initWindow(800, 600, "Triangle")
defer: closeWindow()
let shader = loadShaderCode("""
#version 330 core
layout (location = 0) in vec3 aPos;
void main()
{
gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);
}
""", """
#version 330 core
out vec4 FragColor;
void main()
{
FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f);
}
""")
let vertexArray = loadVertexArray()
assert enableVertexArray(vertexArray)
var vertexData: array[9, float32] = [
-0.5f, -0.5f, 0.0f,
0.5f, -0.5f, 0.0f,
0.0f, 0.5f, 0.0f
]
let vertexBuffer = loadVertexBuffer(vertexData[0].addr, vertexData.len * float32.sizeof, false)
enableVertexBuffer(vertexBuffer)
setVertexAttribute(0.uint32, 3, Float, false, 3 * float32.sizeof, 0)
enableVertexAttribute(0.uint32)
disableVertexArray()
setTargetFPS(60)
while not windowShouldClose():
beginDrawing()
clearBackground(RAYWHITE)
enableShader(shader)
assert enableVertexArray(vertexArray)
drawVertexArray(0, 3)
disableShader()
endDrawing()
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment