Browse Source

Add helper function for program compilation

master
Macoy Madson 9 months ago
parent
commit
a17b689b43
  1. 28
      src/OpenGL.cake

28
src/OpenGL.cake

@ -31,6 +31,34 @@
(return false))
(return true))
(defun opengl-compile-link-shaders
(program-id-out (addr gl-id)
vertex-shader-code (addr (const char))
fragment-shader-code (addr (const char))
&return bool)
(set (deref program-id-out) (glCreateProgram))
(var vertex-shader gl-id (glCreateShader GL_VERTEX_SHADER))
(defer (glDeleteShader vertex-shader))
(scope ;; Vertex shader
(glShaderSource vertex-shader 1 (addr vertex-shader-code) null)
(glCompileShader vertex-shader)
(unless (opengl-shader-was-compiled-sucessfully vertex-shader)
(return false)))
(var fragment-shader gl-id (glCreateShader GL_FRAGMENT_SHADER))
(defer (glDeleteShader fragment-shader))
(scope ;; Fragment shader
(glShaderSource fragment-shader 1 (addr fragment-shader-code) null)
(glCompileShader fragment-shader)
(unless (opengl-shader-was-compiled-sucessfully fragment-shader)
(return false)))
(scope ;; Link vertex and fragment shader
(glAttachShader (deref program-id-out) vertex-shader)
(glAttachShader (deref program-id-out) fragment-shader)
(glLinkProgram (deref program-id-out))
(unless (opengl-program-was-linked-sucessfully (deref program-id-out))
(return false)))
(return true))
(comptime-cond
('auto-test
(defun test--opengl (&return int)

Loading…
Cancel
Save