From 0d8fd653a5286da917d9e9d7da0523788181ff7d Mon Sep 17 00:00:00 2001 From: gbrochar Date: Fri, 25 Dec 2020 14:58:25 +0100 Subject: [PATCH] glut -> glfw --- Makefile | 4 ++-- inc/scop.h | 6 ++--- src/main.c | 7 ++++-- src/run.c | 67 +++++++++++++++++++++++++++++++++++++++--------------- 4 files changed, 59 insertions(+), 25 deletions(-) diff --git a/Makefile b/Makefile index 47317ea..7fadbbb 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ # By: gbrochar +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2020/12/17 19:47:03 by gbrochar #+# #+# # -# Updated: 2020/12/24 12:29:48 by gbrochar ### ########.fr # +# Updated: 2020/12/25 14:54:54 by gbrochar ### ########.fr # # # # **************************************************************************** # @@ -38,7 +38,7 @@ SRC = $(addprefix $(SRC_DIR), $(SRC_FILE)) OBJ = $(addprefix $(OBJ_DIR), $(OBJ_FILE)) INC = $(addprefix $(INC_DIR), $(INC_FILE)) -LIB = -lm -lGL -lglut -lGLEW +LIB = -lm -lGL -lglfw -lGLEW CC = gcc diff --git a/inc/scop.h b/inc/scop.h index ba96406..ec5aeb9 100644 --- a/inc/scop.h +++ b/inc/scop.h @@ -6,7 +6,7 @@ /* By: gbrochar +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/12/22 12:08:22 by gbrochar #+# #+# */ -/* Updated: 2020/12/24 14:32:38 by gbrochar ### ########.fr */ +/* Updated: 2020/12/25 14:54:37 by gbrochar ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,7 +20,7 @@ # include # include -# include +# include # define SUCCESS 0 # define FAILURE -1 @@ -117,6 +117,6 @@ void init_camera(t_env *e); void init_object(t_env *e); void init_env(t_env *e); -void run(t_env *e); +int run(t_env *e); #endif diff --git a/src/main.c b/src/main.c index 31704ea..36a83d9 100644 --- a/src/main.c +++ b/src/main.c @@ -6,7 +6,7 @@ /* By: gbrochar +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/12/22 12:02:14 by gbrochar #+# #+# */ -/* Updated: 2020/12/23 20:30:48 by gbrochar ### ########.fr */ +/* Updated: 2020/12/25 14:58:03 by gbrochar ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,7 +19,10 @@ int main(int argc, char **argv) init_env(&e); if (parse(&e, argc, argv) == SUCCESS) - run(&e); + { + if (run(&e) == FAILURE) + printf("Error with glfw initialization\n"); + } else { free_env(&e); diff --git a/src/run.c b/src/run.c index 7cf3965..6bc98cc 100644 --- a/src/run.c +++ b/src/run.c @@ -6,7 +6,7 @@ /* By: gbrochar +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/12/23 19:38:05 by gbrochar #+# #+# */ -/* Updated: 2020/12/24 14:39:39 by gbrochar ### ########.fr */ +/* Updated: 2020/12/25 14:54:28 by gbrochar ### ########.fr */ /* */ /* ************************************************************************** */ @@ -70,14 +70,14 @@ static void RenderSceneCB() glDisableVertexAttribArray(0); - glutSwapBuffers(); + // glutSwapBuffers(); } -static void InitializeGlutCallbacks(void) -{ - glutDisplayFunc(RenderSceneCB); - glutIdleFunc(RenderSceneCB); -} +// static void InitializeGlutCallbacks(void) +// { +// // glutDisplayFunc(RenderSceneCB); +// // glutIdleFunc(RenderSceneCB); +// } static void CreateVertexBuffer(t_env *e) { @@ -187,22 +187,38 @@ static void CompileShaders() assert(gModelLocation != 0xFFFFFFFF); } -void run(t_env *e) +int run(t_env *e) { - int argc = 1; - char *argv[1]; + // int argc = 1; + // char *argv[1]; - argv[0] = strdup("scop"); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH); - glutInitWindowSize(e->window.width, e->window.height); - glutInitWindowPosition(100, 100); - glutCreateWindow("scop"); + // argv[0] = strdup("scop"); + // glutInit(&argc, argv); + // glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH); + // glutInitWindowSize(e->window.width, e->window.height); + // glutInitWindowPosition(100, 100); + // glutCreateWindow("scop"); + + GLFWwindow* window; + + /* Initialize the library */ + if (!glfwInit()) + return (FAILURE); + + /* Create a windowed mode window and its OpenGL context */ + window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL); + if (!window) + { + glfwTerminate(); + return (FAILURE); + } + + glfwMakeContextCurrent(window); index_count = e->object.indices.ptr; printf("%ld\n", e->object.indices.ptr); printf("%ld\n", e->object.vertices.ptr); - InitializeGlutCallbacks(); + // InitializeGlutCallbacks(); // Must be done after glut is initialized ! GLenum res = glewInit(); if (res != GLEW_OK) @@ -214,5 +230,20 @@ void run(t_env *e) glClearColor(0.0f, 0.0f, 0.0f, 0.0f); CreateVertexBuffer(e); CompileShaders(); - glutMainLoop(); + /* Loop until the user closes the window */ + while (!glfwWindowShouldClose(window)) + { + /* Render here */ + glClear(GL_COLOR_BUFFER_BIT); + + RenderSceneCB(); + /* Swap front and back buffers */ + glfwSwapBuffers(window); + + /* Poll for and process events */ + glfwPollEvents(); + } + + glfwTerminate(); + return (SUCCESS); } \ No newline at end of file