Compare commits
	
		
			2 commits
		
	
	
		
			ea34f7635b
			...
			a2068517ec
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
							 | 
						a2068517ec | ||
| 
							 | 
						0eb4680c48 | 
					 6 changed files with 160 additions and 7 deletions
				
			
		
							
								
								
									
										2
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1 +1,3 @@
 | 
				
			||||||
/build
 | 
					/build
 | 
				
			||||||
 | 
					*.a
 | 
				
			||||||
 | 
					*.o
 | 
				
			||||||
							
								
								
									
										1
									
								
								libadd/add.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								libadd/add.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					int add(int a, int b) { return a + b; }
 | 
				
			||||||
							
								
								
									
										6
									
								
								libadd/include/add.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								libadd/include/add.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,6 @@
 | 
				
			||||||
 | 
					#ifndef ADD_H
 | 
				
			||||||
 | 
					#define ADD_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int add(int a, int b);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // ADD_H
 | 
				
			||||||
							
								
								
									
										34
									
								
								libadd/makefile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								libadd/makefile
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,34 @@
 | 
				
			||||||
 | 
					# Makefile for the add library
 | 
				
			||||||
 | 
					# Builds a static library from the add.c file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Library name
 | 
				
			||||||
 | 
					LIB = libadd.a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Compiler
 | 
				
			||||||
 | 
					CC = gcc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Compiler flags
 | 
				
			||||||
 | 
					CFLAGS = -Wall -Werror -Wextra -pedantic
 | 
				
			||||||
 | 
					CFLAGS += -std=c99 -O3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Source file
 | 
				
			||||||
 | 
					SRC = add.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Object file
 | 
				
			||||||
 | 
					OBJ = $(SRC:.c=.o)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Build the library
 | 
				
			||||||
 | 
					$(LIB): $(OBJ)
 | 
				
			||||||
 | 
						ar rcs $(LIB) $(OBJ)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Build the object file
 | 
				
			||||||
 | 
					$(OBJ): $(SRC)
 | 
				
			||||||
 | 
						$(CC) $(CFLAGS) -c $(SRC)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					format:
 | 
				
			||||||
 | 
						clang-format -i *.c include/*.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Clean the object files
 | 
				
			||||||
 | 
					clean:
 | 
				
			||||||
 | 
						rm -f $(OBJ)
 | 
				
			||||||
 | 
						rm -f $(LIB)
 | 
				
			||||||
							
								
								
									
										13
									
								
								makefile
									
										
									
									
									
								
							
							
						
						
									
										13
									
								
								makefile
									
										
									
									
									
								
							| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
# Compiler and assembler
 | 
					#dd Compiler and assembler
 | 
				
			||||||
CC = 		gcc
 | 
					CC = 		gcc
 | 
				
			||||||
AS = 		as
 | 
					AS = 		as
 | 
				
			||||||
LD = 		ld
 | 
					LD = 		ld
 | 
				
			||||||
| 
						 | 
					@ -20,6 +20,11 @@ CFLAGS += -Wno-unused-local-typedefs
 | 
				
			||||||
CFLAGS += -Wno-unused-const-variable
 | 
					CFLAGS += -Wno-unused-const-variable
 | 
				
			||||||
CFLAGS += -Wno-unused-macros
 | 
					CFLAGS += -Wno-unused-macros
 | 
				
			||||||
CFLAGS += -O3
 | 
					CFLAGS += -O3
 | 
				
			||||||
 | 
					CFLAGS += -Ilibadd/include
 | 
				
			||||||
 | 
					CFLAGS += -lm
 | 
				
			||||||
 | 
					CFLAGS += -lglfw
 | 
				
			||||||
 | 
					CFLAGS += -lGL
 | 
				
			||||||
 | 
					CFLAGS += -lGLU
 | 
				
			||||||
CFLAGS += -g
 | 
					CFLAGS += -g
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GITHASH = $(shell git rev-parse --short HEAD)
 | 
					GITHASH = $(shell git rev-parse --short HEAD)
 | 
				
			||||||
| 
						 | 
					@ -36,6 +41,9 @@ OBJS := $(patsubst src/%.c,build/%.o,$(SRCS))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
all: $(TARGET)
 | 
					all: $(TARGET)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					libadd/libadd.a:
 | 
				
			||||||
 | 
						$(MAKE) -C libadd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# For convenience
 | 
					# For convenience
 | 
				
			||||||
run: $(TARGET)
 | 
					run: $(TARGET)
 | 
				
			||||||
	@./$(TARGET)
 | 
						@./$(TARGET)
 | 
				
			||||||
| 
						 | 
					@ -45,7 +53,7 @@ mkbuilddir:
 | 
				
			||||||
	@mkdir -p build
 | 
						@mkdir -p build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Link the object files into the target binary
 | 
					# Link the object files into the target binary
 | 
				
			||||||
$(TARGET): $(OBJS)
 | 
					$(TARGET): $(OBJS) libadd/libadd.a
 | 
				
			||||||
	@$(CC) $(CFLAGS) -o $@ $^
 | 
						@$(CC) $(CFLAGS) -o $@ $^
 | 
				
			||||||
	@echo -e "LD \t$^"
 | 
						@echo -e "LD \t$^"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -67,6 +75,7 @@ clean:
 | 
				
			||||||
	rm -r build
 | 
						rm -r build
 | 
				
			||||||
	rm -f build/*.o
 | 
						rm -f build/*.o
 | 
				
			||||||
	rm -f $(TARGET)*
 | 
						rm -f $(TARGET)*
 | 
				
			||||||
 | 
						$(MAKE) -C libadd clean --no-print-directory
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Create a signed release
 | 
					# Create a signed release
 | 
				
			||||||
tar: $(TARGET_TAR)
 | 
					tar: $(TARGET_TAR)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										105
									
								
								src/main.c
									
										
									
									
									
								
							
							
						
						
									
										105
									
								
								src/main.c
									
										
									
									
									
								
							| 
						 | 
					@ -1,6 +1,107 @@
 | 
				
			||||||
 | 
					#define GLFW_INCLUDE_NONE
 | 
				
			||||||
 | 
					#include <GLFW/glfw3.h>
 | 
				
			||||||
 | 
					#include <GL/gl.h>
 | 
				
			||||||
 | 
					#include <GL/glu.h>
 | 
				
			||||||
 | 
					#include <math.h>
 | 
				
			||||||
#include <stdio.h>
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int main(int argc, const char **argv) {
 | 
					#define WIDTH 800
 | 
				
			||||||
  printf("Hello, World!\n");
 | 
					#define HEIGHT 600
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Function to draw the cube
 | 
				
			||||||
 | 
					void drawCube() {
 | 
				
			||||||
 | 
					    glBegin(GL_QUADS);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Front face
 | 
				
			||||||
 | 
					    glColor3f(1.0f, 0.0f, 0.0f);
 | 
				
			||||||
 | 
					    glVertex3f(-1.0f, -1.0f, 1.0f);
 | 
				
			||||||
 | 
					    glVertex3f(1.0f, -1.0f, 1.0f);
 | 
				
			||||||
 | 
					    glVertex3f(1.0f, 1.0f, 1.0f);
 | 
				
			||||||
 | 
					    glVertex3f(-1.0f, 1.0f, 1.0f);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Back face
 | 
				
			||||||
 | 
					    glColor3f(0.0f, 1.0f, 0.0f);
 | 
				
			||||||
 | 
					    glVertex3f(-1.0f, -1.0f, -1.0f);
 | 
				
			||||||
 | 
					    glVertex3f(-1.0f, 1.0f, -1.0f);
 | 
				
			||||||
 | 
					    glVertex3f(1.0f, 1.0f, -1.0f);
 | 
				
			||||||
 | 
					    glVertex3f(1.0f, -1.0f, -1.0f);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Top face
 | 
				
			||||||
 | 
					    glColor3f(0.0f, 0.0f, 1.0f);
 | 
				
			||||||
 | 
					    glVertex3f(-1.0f, 1.0f, -1.0f);
 | 
				
			||||||
 | 
					    glVertex3f(-1.0f, 1.0f, 1.0f);
 | 
				
			||||||
 | 
					    glVertex3f(1.0f, 1.0f, 1.0f);
 | 
				
			||||||
 | 
					    glVertex3f(1.0f, 1.0f, -1.0f);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Bottom face
 | 
				
			||||||
 | 
					    glColor3f(1.0f, 1.0f, 0.0f);
 | 
				
			||||||
 | 
					    glVertex3f(-1.0f, -1.0f, -1.0f);
 | 
				
			||||||
 | 
					    glVertex3f(1.0f, -1.0f, -1.0f);
 | 
				
			||||||
 | 
					    glVertex3f(1.0f, -1.0f, 1.0f);
 | 
				
			||||||
 | 
					    glVertex3f(-1.0f, -1.0f, 1.0f);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Right face
 | 
				
			||||||
 | 
					    glColor3f(1.0f, 0.0f, 1.0f);
 | 
				
			||||||
 | 
					    glVertex3f(1.0f, -1.0f, -1.0f);
 | 
				
			||||||
 | 
					    glVertex3f(1.0f, 1.0f, -1.0f);
 | 
				
			||||||
 | 
					    glVertex3f(1.0f, 1.0f, 1.0f);
 | 
				
			||||||
 | 
					    glVertex3f(1.0f, -1.0f, 1.0f);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Left face
 | 
				
			||||||
 | 
					    glColor3f(0.0f, 1.0f, 1.0f);
 | 
				
			||||||
 | 
					    glVertex3f(-1.0f, -1.0f, -1.0f);
 | 
				
			||||||
 | 
					    glVertex3f(-1.0f, -1.0f, 1.0f);
 | 
				
			||||||
 | 
					    glVertex3f(-1.0f, 1.0f, 1.0f);
 | 
				
			||||||
 | 
					    glVertex3f(-1.0f, 1.0f, -1.0f);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    glEnd();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main() {
 | 
				
			||||||
 | 
					    // Initialize GLFW
 | 
				
			||||||
 | 
					    if (!glfwInit()) {
 | 
				
			||||||
 | 
					        fprintf(stderr, "Failed to initialize GLFW\n");
 | 
				
			||||||
 | 
					        return -1;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Create a windowed mode window and its OpenGL context
 | 
				
			||||||
 | 
					    GLFWwindow* window = glfwCreateWindow(WIDTH, HEIGHT, "Rotating Cube", NULL, NULL);
 | 
				
			||||||
 | 
					    if (!window) {
 | 
				
			||||||
 | 
					        glfwTerminate();
 | 
				
			||||||
 | 
					        return -1;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Make the window's context current
 | 
				
			||||||
 | 
					    glfwMakeContextCurrent(window);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Loop until the user closes the window
 | 
				
			||||||
 | 
					    while (!glfwWindowShouldClose(window)) {
 | 
				
			||||||
 | 
					        // Clear the framebuffer
 | 
				
			||||||
 | 
					        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        // Set up the view
 | 
				
			||||||
 | 
					        glMatrixMode(GL_PROJECTION);
 | 
				
			||||||
 | 
					        glLoadIdentity();
 | 
				
			||||||
 | 
					        gluPerspective(45.0f, (float)WIDTH / (float)HEIGHT, 0.1f, 100.0f);
 | 
				
			||||||
 | 
					        glMatrixMode(GL_MODELVIEW);
 | 
				
			||||||
 | 
					        glLoadIdentity();
 | 
				
			||||||
 | 
					        gluLookAt(3, 3, 3, 0, 0, 0, 0, 1, 0); // Eye position, look at position, up direction
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Rotate the cube
 | 
				
			||||||
 | 
					        static double angle = 0;
 | 
				
			||||||
 | 
					        glRotated(angle, 0, 1, 1); // Rotate around x, y, and z axes
 | 
				
			||||||
 | 
					        angle += 0.5;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Draw the cube
 | 
				
			||||||
 | 
					        drawCube();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Swap front and back buffers
 | 
				
			||||||
 | 
					        glfwSwapBuffers(window);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Poll for and process events
 | 
				
			||||||
 | 
					        glfwPollEvents();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    glfwTerminate();
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue