|
|
@ -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) |
|
|
|