initial commit.
This commit is contained in:
		
						commit
						c74c452362
					
				
					 17 changed files with 4983 additions and 0 deletions
				
			
		
							
								
								
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					build/
 | 
				
			||||||
							
								
								
									
										21
									
								
								.vscode/c_cpp_properties.json
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								.vscode/c_cpp_properties.json
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,21 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    "env": {
 | 
				
			||||||
 | 
					        "defaultIncludePath": [
 | 
				
			||||||
 | 
					            "${workspaceFolder}/src",
 | 
				
			||||||
 | 
								"${workspaceFolder}/include"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "configurations": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "name": "Luker",
 | 
				
			||||||
 | 
					            "includePath": [
 | 
				
			||||||
 | 
					                "${defaultIncludePath}"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "intelliSenseMode": "linux-gcc-x64",
 | 
				
			||||||
 | 
					            "compilerPath": "/usr/bin/g++",
 | 
				
			||||||
 | 
					            "cStandard": "gnu17",
 | 
				
			||||||
 | 
					            "cppStandard": "gnu++14"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "version": 4
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										34
									
								
								.vscode/launch.json
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								.vscode/launch.json
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,34 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    // Use IntelliSense to learn about possible attributes.
 | 
				
			||||||
 | 
					    // Hover to view descriptions of existing attributes.
 | 
				
			||||||
 | 
					    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
 | 
				
			||||||
 | 
					    "version": "0.2.0",
 | 
				
			||||||
 | 
					    "configurations": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "name": "(gdb) build and debug project",
 | 
				
			||||||
 | 
					            "type": "cppdbg",
 | 
				
			||||||
 | 
					            "request": "launch",
 | 
				
			||||||
 | 
					            "program": "${workspaceFolder}/build/main",
 | 
				
			||||||
 | 
					            "args": [],
 | 
				
			||||||
 | 
					            "stopAtEntry": false,
 | 
				
			||||||
 | 
					            "cwd": "${workspaceFolder}/build",
 | 
				
			||||||
 | 
					            "environment": [],
 | 
				
			||||||
 | 
					            "externalConsole": false,
 | 
				
			||||||
 | 
					            "MIMode": "gdb",
 | 
				
			||||||
 | 
					            "setupCommands": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "description": "Enable pretty-printing for gdb",
 | 
				
			||||||
 | 
					                    "text": "-enable-pretty-printing",
 | 
				
			||||||
 | 
					                    "ignoreFailures": true
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "description":  "Set Disassembly Flavor to Intel",
 | 
				
			||||||
 | 
					                    "text": "-gdb-set disassembly-flavor intel",
 | 
				
			||||||
 | 
					                    "ignoreFailures": true
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "preLaunchTask": "C/C++: g++ build workspace project"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										19
									
								
								.vscode/tasks.json
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								.vscode/tasks.json
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,19 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    "tasks": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "type": "shell",
 | 
				
			||||||
 | 
					            "label": "C/C++: g++ build workspace project",
 | 
				
			||||||
 | 
					            "command": "${workspaceFolder}/build.sh",
 | 
				
			||||||
 | 
					            "options": {
 | 
				
			||||||
 | 
					                "cwd": "${workspaceFolder}"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "group": {
 | 
				
			||||||
 | 
					                "kind": "build",
 | 
				
			||||||
 | 
					                "isDefault": true
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "problemMatcher": "$gcc",
 | 
				
			||||||
 | 
					            "detail": "compiler: /usr/bin/g++"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "version": "2.0.0"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										18
									
								
								build.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										18
									
								
								build.sh
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,18 @@
 | 
				
			||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export IFS=$'\n'
 | 
				
			||||||
 | 
					mkdir -p build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ ! -e build/res ]]; then
 | 
				
			||||||
 | 
					    ln -s ../res build/res
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SRC_FILES=($(find src/ -iname "*.c" -or -iname "*.cpp"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					g++ -g -fdiagnostics-color=always \
 | 
				
			||||||
 | 
					    -Iinclude \
 | 
				
			||||||
 | 
						${SRC_FILES[@]} \
 | 
				
			||||||
 | 
					    mybox.cpp \
 | 
				
			||||||
 | 
						-ldl -lglfw -lGL -lX11 -lpthread -lXrandr -lXi -lm \
 | 
				
			||||||
 | 
					    -o build/main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										2804
									
								
								include/glad/glad.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2804
									
								
								include/glad/glad.h
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										311
									
								
								include/glad/khrplatform.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										311
									
								
								include/glad/khrplatform.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,311 @@
 | 
				
			||||||
 | 
					#ifndef __khrplatform_h_
 | 
				
			||||||
 | 
					#define __khrplatform_h_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					** Copyright (c) 2008-2018 The Khronos Group Inc.
 | 
				
			||||||
 | 
					**
 | 
				
			||||||
 | 
					** Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					** copy of this software and/or associated documentation files (the
 | 
				
			||||||
 | 
					** "Materials"), to deal in the Materials without restriction, including
 | 
				
			||||||
 | 
					** without limitation the rights to use, copy, modify, merge, publish,
 | 
				
			||||||
 | 
					** distribute, sublicense, and/or sell copies of the Materials, and to
 | 
				
			||||||
 | 
					** permit persons to whom the Materials are furnished to do so, subject to
 | 
				
			||||||
 | 
					** the following conditions:
 | 
				
			||||||
 | 
					**
 | 
				
			||||||
 | 
					** The above copyright notice and this permission notice shall be included
 | 
				
			||||||
 | 
					** in all copies or substantial portions of the Materials.
 | 
				
			||||||
 | 
					**
 | 
				
			||||||
 | 
					** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 | 
				
			||||||
 | 
					** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 | 
				
			||||||
 | 
					** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 | 
				
			||||||
 | 
					** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 | 
				
			||||||
 | 
					** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 | 
				
			||||||
 | 
					** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 | 
				
			||||||
 | 
					** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Khronos platform-specific types and definitions.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The master copy of khrplatform.h is maintained in the Khronos EGL
 | 
				
			||||||
 | 
					 * Registry repository at https://github.com/KhronosGroup/EGL-Registry
 | 
				
			||||||
 | 
					 * The last semantic modification to khrplatform.h was at commit ID:
 | 
				
			||||||
 | 
					 *      67a3e0864c2d75ea5287b9f3d2eb74a745936692
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Adopters may modify this file to suit their platform. Adopters are
 | 
				
			||||||
 | 
					 * encouraged to submit platform specific modifications to the Khronos
 | 
				
			||||||
 | 
					 * group so that they can be included in future versions of this file.
 | 
				
			||||||
 | 
					 * Please submit changes by filing pull requests or issues on
 | 
				
			||||||
 | 
					 * the EGL Registry repository linked above.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * See the Implementer's Guidelines for information about where this file
 | 
				
			||||||
 | 
					 * should be located on your system and for more details of its use:
 | 
				
			||||||
 | 
					 *    http://www.khronos.org/registry/implementers_guide.pdf
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This file should be included as
 | 
				
			||||||
 | 
					 *        #include <KHR/khrplatform.h>
 | 
				
			||||||
 | 
					 * by Khronos client API header files that use its types and defines.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The types in khrplatform.h should only be used to define API-specific types.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Types defined in khrplatform.h:
 | 
				
			||||||
 | 
					 *    khronos_int8_t              signed   8  bit
 | 
				
			||||||
 | 
					 *    khronos_uint8_t             unsigned 8  bit
 | 
				
			||||||
 | 
					 *    khronos_int16_t             signed   16 bit
 | 
				
			||||||
 | 
					 *    khronos_uint16_t            unsigned 16 bit
 | 
				
			||||||
 | 
					 *    khronos_int32_t             signed   32 bit
 | 
				
			||||||
 | 
					 *    khronos_uint32_t            unsigned 32 bit
 | 
				
			||||||
 | 
					 *    khronos_int64_t             signed   64 bit
 | 
				
			||||||
 | 
					 *    khronos_uint64_t            unsigned 64 bit
 | 
				
			||||||
 | 
					 *    khronos_intptr_t            signed   same number of bits as a pointer
 | 
				
			||||||
 | 
					 *    khronos_uintptr_t           unsigned same number of bits as a pointer
 | 
				
			||||||
 | 
					 *    khronos_ssize_t             signed   size
 | 
				
			||||||
 | 
					 *    khronos_usize_t             unsigned size
 | 
				
			||||||
 | 
					 *    khronos_float_t             signed   32 bit floating point
 | 
				
			||||||
 | 
					 *    khronos_time_ns_t           unsigned 64 bit time in nanoseconds
 | 
				
			||||||
 | 
					 *    khronos_utime_nanoseconds_t unsigned time interval or absolute time in
 | 
				
			||||||
 | 
					 *                                         nanoseconds
 | 
				
			||||||
 | 
					 *    khronos_stime_nanoseconds_t signed time interval in nanoseconds
 | 
				
			||||||
 | 
					 *    khronos_boolean_enum_t      enumerated boolean type. This should
 | 
				
			||||||
 | 
					 *      only be used as a base type when a client API's boolean type is
 | 
				
			||||||
 | 
					 *      an enum. Client APIs which use an integer or other type for
 | 
				
			||||||
 | 
					 *      booleans cannot use this as the base type for their boolean.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Tokens defined in khrplatform.h:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *    KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *    KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
 | 
				
			||||||
 | 
					 *    KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Calling convention macros defined in this file:
 | 
				
			||||||
 | 
					 *    KHRONOS_APICALL
 | 
				
			||||||
 | 
					 *    KHRONOS_APIENTRY
 | 
				
			||||||
 | 
					 *    KHRONOS_APIATTRIBUTES
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * These may be used in function prototypes as:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *      KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
 | 
				
			||||||
 | 
					 *                                  int arg1,
 | 
				
			||||||
 | 
					 *                                  int arg2) KHRONOS_APIATTRIBUTES;
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC)
 | 
				
			||||||
 | 
					#   define KHRONOS_STATIC 1
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*-------------------------------------------------------------------------
 | 
				
			||||||
 | 
					 * Definition of KHRONOS_APICALL
 | 
				
			||||||
 | 
					 *-------------------------------------------------------------------------
 | 
				
			||||||
 | 
					 * This precedes the return type of the function in the function prototype.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#if defined(KHRONOS_STATIC)
 | 
				
			||||||
 | 
					    /* If the preprocessor constant KHRONOS_STATIC is defined, make the
 | 
				
			||||||
 | 
					     * header compatible with static linking. */
 | 
				
			||||||
 | 
					#   define KHRONOS_APICALL
 | 
				
			||||||
 | 
					#elif defined(_WIN32)
 | 
				
			||||||
 | 
					#   define KHRONOS_APICALL __declspec(dllimport)
 | 
				
			||||||
 | 
					#elif defined (__SYMBIAN32__)
 | 
				
			||||||
 | 
					#   define KHRONOS_APICALL IMPORT_C
 | 
				
			||||||
 | 
					#elif defined(__ANDROID__)
 | 
				
			||||||
 | 
					#   define KHRONOS_APICALL __attribute__((visibility("default")))
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#   define KHRONOS_APICALL
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*-------------------------------------------------------------------------
 | 
				
			||||||
 | 
					 * Definition of KHRONOS_APIENTRY
 | 
				
			||||||
 | 
					 *-------------------------------------------------------------------------
 | 
				
			||||||
 | 
					 * This follows the return type of the function  and precedes the function
 | 
				
			||||||
 | 
					 * name in the function prototype.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
 | 
				
			||||||
 | 
					    /* Win32 but not WinCE */
 | 
				
			||||||
 | 
					#   define KHRONOS_APIENTRY __stdcall
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#   define KHRONOS_APIENTRY
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*-------------------------------------------------------------------------
 | 
				
			||||||
 | 
					 * Definition of KHRONOS_APIATTRIBUTES
 | 
				
			||||||
 | 
					 *-------------------------------------------------------------------------
 | 
				
			||||||
 | 
					 * This follows the closing parenthesis of the function prototype arguments.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#if defined (__ARMCC_2__)
 | 
				
			||||||
 | 
					#define KHRONOS_APIATTRIBUTES __softfp
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#define KHRONOS_APIATTRIBUTES
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*-------------------------------------------------------------------------
 | 
				
			||||||
 | 
					 * basic type definitions
 | 
				
			||||||
 | 
					 *-----------------------------------------------------------------------*/
 | 
				
			||||||
 | 
					#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Using <stdint.h>
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#include <stdint.h>
 | 
				
			||||||
 | 
					typedef int32_t                 khronos_int32_t;
 | 
				
			||||||
 | 
					typedef uint32_t                khronos_uint32_t;
 | 
				
			||||||
 | 
					typedef int64_t                 khronos_int64_t;
 | 
				
			||||||
 | 
					typedef uint64_t                khronos_uint64_t;
 | 
				
			||||||
 | 
					#define KHRONOS_SUPPORT_INT64   1
 | 
				
			||||||
 | 
					#define KHRONOS_SUPPORT_FLOAT   1
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * To support platform where unsigned long cannot be used interchangeably with
 | 
				
			||||||
 | 
					 * inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t.
 | 
				
			||||||
 | 
					 * Ideally, we could just use (u)intptr_t everywhere, but this could result in
 | 
				
			||||||
 | 
					 * ABI breakage if khronos_uintptr_t is changed from unsigned long to
 | 
				
			||||||
 | 
					 * unsigned long long or similar (this results in different C++ name mangling).
 | 
				
			||||||
 | 
					 * To avoid changes for existing platforms, we restrict usage of intptr_t to
 | 
				
			||||||
 | 
					 * platforms where the size of a pointer is larger than the size of long.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__)
 | 
				
			||||||
 | 
					#if __SIZEOF_POINTER__ > __SIZEOF_LONG__
 | 
				
			||||||
 | 
					#define KHRONOS_USE_INTPTR_T
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#elif defined(__VMS ) || defined(__sgi)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Using <inttypes.h>
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#include <inttypes.h>
 | 
				
			||||||
 | 
					typedef int32_t                 khronos_int32_t;
 | 
				
			||||||
 | 
					typedef uint32_t                khronos_uint32_t;
 | 
				
			||||||
 | 
					typedef int64_t                 khronos_int64_t;
 | 
				
			||||||
 | 
					typedef uint64_t                khronos_uint64_t;
 | 
				
			||||||
 | 
					#define KHRONOS_SUPPORT_INT64   1
 | 
				
			||||||
 | 
					#define KHRONOS_SUPPORT_FLOAT   1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Win32
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					typedef __int32                 khronos_int32_t;
 | 
				
			||||||
 | 
					typedef unsigned __int32        khronos_uint32_t;
 | 
				
			||||||
 | 
					typedef __int64                 khronos_int64_t;
 | 
				
			||||||
 | 
					typedef unsigned __int64        khronos_uint64_t;
 | 
				
			||||||
 | 
					#define KHRONOS_SUPPORT_INT64   1
 | 
				
			||||||
 | 
					#define KHRONOS_SUPPORT_FLOAT   1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#elif defined(__sun__) || defined(__digital__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Sun or Digital
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					typedef int                     khronos_int32_t;
 | 
				
			||||||
 | 
					typedef unsigned int            khronos_uint32_t;
 | 
				
			||||||
 | 
					#if defined(__arch64__) || defined(_LP64)
 | 
				
			||||||
 | 
					typedef long int                khronos_int64_t;
 | 
				
			||||||
 | 
					typedef unsigned long int       khronos_uint64_t;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					typedef long long int           khronos_int64_t;
 | 
				
			||||||
 | 
					typedef unsigned long long int  khronos_uint64_t;
 | 
				
			||||||
 | 
					#endif /* __arch64__ */
 | 
				
			||||||
 | 
					#define KHRONOS_SUPPORT_INT64   1
 | 
				
			||||||
 | 
					#define KHRONOS_SUPPORT_FLOAT   1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#elif 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Hypothetical platform with no float or int64 support
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					typedef int                     khronos_int32_t;
 | 
				
			||||||
 | 
					typedef unsigned int            khronos_uint32_t;
 | 
				
			||||||
 | 
					#define KHRONOS_SUPPORT_INT64   0
 | 
				
			||||||
 | 
					#define KHRONOS_SUPPORT_FLOAT   0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Generic fallback
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#include <stdint.h>
 | 
				
			||||||
 | 
					typedef int32_t                 khronos_int32_t;
 | 
				
			||||||
 | 
					typedef uint32_t                khronos_uint32_t;
 | 
				
			||||||
 | 
					typedef int64_t                 khronos_int64_t;
 | 
				
			||||||
 | 
					typedef uint64_t                khronos_uint64_t;
 | 
				
			||||||
 | 
					#define KHRONOS_SUPPORT_INT64   1
 | 
				
			||||||
 | 
					#define KHRONOS_SUPPORT_FLOAT   1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Types that are (so far) the same on all platforms
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					typedef signed   char          khronos_int8_t;
 | 
				
			||||||
 | 
					typedef unsigned char          khronos_uint8_t;
 | 
				
			||||||
 | 
					typedef signed   short int     khronos_int16_t;
 | 
				
			||||||
 | 
					typedef unsigned short int     khronos_uint16_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Types that differ between LLP64 and LP64 architectures - in LLP64,
 | 
				
			||||||
 | 
					 * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
 | 
				
			||||||
 | 
					 * to be the only LLP64 architecture in current use.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#ifdef KHRONOS_USE_INTPTR_T
 | 
				
			||||||
 | 
					typedef intptr_t               khronos_intptr_t;
 | 
				
			||||||
 | 
					typedef uintptr_t              khronos_uintptr_t;
 | 
				
			||||||
 | 
					#elif defined(_WIN64)
 | 
				
			||||||
 | 
					typedef signed   long long int khronos_intptr_t;
 | 
				
			||||||
 | 
					typedef unsigned long long int khronos_uintptr_t;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					typedef signed   long  int     khronos_intptr_t;
 | 
				
			||||||
 | 
					typedef unsigned long  int     khronos_uintptr_t;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(_WIN64)
 | 
				
			||||||
 | 
					typedef signed   long long int khronos_ssize_t;
 | 
				
			||||||
 | 
					typedef unsigned long long int khronos_usize_t;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					typedef signed   long  int     khronos_ssize_t;
 | 
				
			||||||
 | 
					typedef unsigned long  int     khronos_usize_t;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if KHRONOS_SUPPORT_FLOAT
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Float type
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					typedef          float         khronos_float_t;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if KHRONOS_SUPPORT_INT64
 | 
				
			||||||
 | 
					/* Time types
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * These types can be used to represent a time interval in nanoseconds or
 | 
				
			||||||
 | 
					 * an absolute Unadjusted System Time.  Unadjusted System Time is the number
 | 
				
			||||||
 | 
					 * of nanoseconds since some arbitrary system event (e.g. since the last
 | 
				
			||||||
 | 
					 * time the system booted).  The Unadjusted System Time is an unsigned
 | 
				
			||||||
 | 
					 * 64 bit value that wraps back to 0 every 584 years.  Time intervals
 | 
				
			||||||
 | 
					 * may be either signed or unsigned.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					typedef khronos_uint64_t       khronos_utime_nanoseconds_t;
 | 
				
			||||||
 | 
					typedef khronos_int64_t        khronos_stime_nanoseconds_t;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Dummy value used to pad enum types to 32 bits.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#ifndef KHRONOS_MAX_ENUM
 | 
				
			||||||
 | 
					#define KHRONOS_MAX_ENUM 0x7FFFFFFF
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Enumerated boolean type
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Values other than zero should be considered to be true.  Therefore
 | 
				
			||||||
 | 
					 * comparisons should not be made against KHRONOS_TRUE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					    KHRONOS_FALSE = 0,
 | 
				
			||||||
 | 
					    KHRONOS_TRUE  = 1,
 | 
				
			||||||
 | 
					    KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
 | 
				
			||||||
 | 
					} khronos_boolean_enum_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __khrplatform_h_ */
 | 
				
			||||||
							
								
								
									
										59
									
								
								mybox.code-workspace
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								mybox.code-workspace
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,59 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    "folders": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "path": "."
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"settings": {
 | 
				
			||||||
 | 
							"files.associations": {
 | 
				
			||||||
 | 
								"cctype": "cpp",
 | 
				
			||||||
 | 
								"clocale": "cpp",
 | 
				
			||||||
 | 
								"cmath": "cpp",
 | 
				
			||||||
 | 
								"cstdarg": "cpp",
 | 
				
			||||||
 | 
								"cstddef": "cpp",
 | 
				
			||||||
 | 
								"cstdio": "cpp",
 | 
				
			||||||
 | 
								"cstdlib": "cpp",
 | 
				
			||||||
 | 
								"cwchar": "cpp",
 | 
				
			||||||
 | 
								"cwctype": "cpp",
 | 
				
			||||||
 | 
								"array": "cpp",
 | 
				
			||||||
 | 
								"atomic": "cpp",
 | 
				
			||||||
 | 
								"*.tcc": "cpp",
 | 
				
			||||||
 | 
								"cstdint": "cpp",
 | 
				
			||||||
 | 
								"deque": "cpp",
 | 
				
			||||||
 | 
								"unordered_map": "cpp",
 | 
				
			||||||
 | 
								"vector": "cpp",
 | 
				
			||||||
 | 
								"exception": "cpp",
 | 
				
			||||||
 | 
								"algorithm": "cpp",
 | 
				
			||||||
 | 
								"functional": "cpp",
 | 
				
			||||||
 | 
								"iterator": "cpp",
 | 
				
			||||||
 | 
								"memory": "cpp",
 | 
				
			||||||
 | 
								"memory_resource": "cpp",
 | 
				
			||||||
 | 
								"numeric": "cpp",
 | 
				
			||||||
 | 
								"optional": "cpp",
 | 
				
			||||||
 | 
								"random": "cpp",
 | 
				
			||||||
 | 
								"string": "cpp",
 | 
				
			||||||
 | 
								"string_view": "cpp",
 | 
				
			||||||
 | 
								"system_error": "cpp",
 | 
				
			||||||
 | 
								"tuple": "cpp",
 | 
				
			||||||
 | 
								"type_traits": "cpp",
 | 
				
			||||||
 | 
								"utility": "cpp",
 | 
				
			||||||
 | 
								"fstream": "cpp",
 | 
				
			||||||
 | 
								"initializer_list": "cpp",
 | 
				
			||||||
 | 
								"iosfwd": "cpp",
 | 
				
			||||||
 | 
								"iostream": "cpp",
 | 
				
			||||||
 | 
								"istream": "cpp",
 | 
				
			||||||
 | 
								"limits": "cpp",
 | 
				
			||||||
 | 
								"new": "cpp",
 | 
				
			||||||
 | 
								"ostream": "cpp",
 | 
				
			||||||
 | 
								"sstream": "cpp",
 | 
				
			||||||
 | 
								"stdexcept": "cpp",
 | 
				
			||||||
 | 
								"streambuf": "cpp",
 | 
				
			||||||
 | 
								"cinttypes": "cpp",
 | 
				
			||||||
 | 
								"typeinfo": "cpp",
 | 
				
			||||||
 | 
								"bit": "cpp",
 | 
				
			||||||
 | 
								"string.h": "c",
 | 
				
			||||||
 | 
								"lgl_callbacks.h": "c",
 | 
				
			||||||
 | 
								"cassert": "cpp"
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										146
									
								
								mybox.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										146
									
								
								mybox.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,146 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <glad/glad.h>
 | 
				
			||||||
 | 
					#include <GLFW/glfw3.h>
 | 
				
			||||||
 | 
					#include <iostream>
 | 
				
			||||||
 | 
					#include <cassert>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "src/standard_ints.h"
 | 
				
			||||||
 | 
					#include "src/lgl_callbacks.h"
 | 
				
			||||||
 | 
					#include "src/lgl_shader_tools.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main(void) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						std::cout << "Hello World." << std::endl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Setup GLFW context
 | 
				
			||||||
 | 
						glfwInit();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Establish 4.2 GL requirement
 | 
				
			||||||
 | 
						glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
 | 
				
			||||||
 | 
						glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
 | 
				
			||||||
 | 
						glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Build the winodw
 | 
				
			||||||
 | 
						GLFWwindow *window = glfwCreateWindow(960, 400, 
 | 
				
			||||||
 | 
							"Hello MyBox", NULL, NULL);
 | 
				
			||||||
 | 
						if (window == NULL) {
 | 
				
			||||||
 | 
							std::cout << "Failed to create GLFW window." << std::endl;
 | 
				
			||||||
 | 
							glfwTerminate();
 | 
				
			||||||
 | 
							return -1;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						glfwMakeContextCurrent(window);
 | 
				
			||||||
 | 
						// Set the resize callback;
 | 
				
			||||||
 | 
						glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Setup the glad loader
 | 
				
			||||||
 | 
						if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
 | 
				
			||||||
 | 
							std::cout << "Failed to initalize GLAD." << std::endl;
 | 
				
			||||||
 | 
							return -1;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						i32 success;
 | 
				
			||||||
 | 
						char infoLog[512];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Create the vertex shader
 | 
				
			||||||
 | 
						char *shdr_src_vertex = readshader("vertex.glsl");
 | 
				
			||||||
 | 
						u32 vertexShader = glCreateShader(GL_VERTEX_SHADER);
 | 
				
			||||||
 | 
						glShaderSource(vertexShader, 1, &shdr_src_vertex, NULL);
 | 
				
			||||||
 | 
						glCompileShader(vertexShader);
 | 
				
			||||||
 | 
						glGetShaderiv(vertexShader, GL_COMPILE_STATUS, &success);
 | 
				
			||||||
 | 
						freeshader(shdr_src_vertex);
 | 
				
			||||||
 | 
						if (!success) {
 | 
				
			||||||
 | 
							glGetShaderInfoLog(vertexShader, 512, NULL, infoLog);
 | 
				
			||||||
 | 
							std::cout << "ERROR SHADER::VERTEX::Compilation Failed\n" << 
 | 
				
			||||||
 | 
								infoLog << std::endl;
 | 
				
			||||||
 | 
							return -1;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Create the fragment shader
 | 
				
			||||||
 | 
						char *shdr_src_fragment = readshader("fragment.glsl");
 | 
				
			||||||
 | 
						u32 fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
 | 
				
			||||||
 | 
						glShaderSource(fragmentShader, 1, &shdr_src_fragment, NULL);
 | 
				
			||||||
 | 
						glCompileShader(fragmentShader);
 | 
				
			||||||
 | 
						glGetShaderiv(fragmentShader, GL_COMPILE_STATUS, &success);
 | 
				
			||||||
 | 
						freeshader(shdr_src_fragment);
 | 
				
			||||||
 | 
						if (!success) {
 | 
				
			||||||
 | 
							glGetShaderInfoLog(fragmentShader, 512, NULL, infoLog);
 | 
				
			||||||
 | 
							std::cout << "ERROR SHADER::FRAGMENT::Compilation Failed\n" << 
 | 
				
			||||||
 | 
								infoLog << std::endl;
 | 
				
			||||||
 | 
							return -1;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Create the shader program
 | 
				
			||||||
 | 
						u32 shaderProgram = glCreateProgram();
 | 
				
			||||||
 | 
						glAttachShader(shaderProgram, vertexShader);
 | 
				
			||||||
 | 
						glAttachShader(shaderProgram, fragmentShader);
 | 
				
			||||||
 | 
						glLinkProgram(shaderProgram);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						glGetProgramiv(shaderProgram, GL_LINK_STATUS, &success);
 | 
				
			||||||
 | 
						if (!success) {
 | 
				
			||||||
 | 
							glGetProgramInfoLog(shaderProgram, 512, NULL, infoLog);
 | 
				
			||||||
 | 
							std::cout << "ERROR SHADER::PROGRAM::Linking Failed\n" << 
 | 
				
			||||||
 | 
								infoLog << std::endl;
 | 
				
			||||||
 | 
							return -1;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Free the old shader bits
 | 
				
			||||||
 | 
						glDeleteShader(vertexShader);
 | 
				
			||||||
 | 
						glDeleteShader(fragmentShader);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Define the vertex shader dat.
 | 
				
			||||||
 | 
						f32 vertices[] = {
 | 
				
			||||||
 | 
							 0.5f,  0.5f, 0.0f,	// tr
 | 
				
			||||||
 | 
							 0.5f, -0.5f, 0.0f,	// br
 | 
				
			||||||
 | 
							-0.5f, -0.5f, 0.0f,	// bl
 | 
				
			||||||
 | 
							-0.5f,  0.5f, 0.0f 	// tl
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
						u32 indicies[] {
 | 
				
			||||||
 | 
							0, 1, 3,	// t1
 | 
				
			||||||
 | 
							1, 2, 3		// t2
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						u32 EBO;
 | 
				
			||||||
 | 
						u32 VBO;
 | 
				
			||||||
 | 
						u32 VAO;
 | 
				
			||||||
 | 
						glGenBuffers(1, &EBO);
 | 
				
			||||||
 | 
						glGenBuffers(1, &VBO);
 | 
				
			||||||
 | 
						glGenVertexArrays(1, &VAO);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						// Bind VAO
 | 
				
			||||||
 | 
						glBindVertexArray(VAO);
 | 
				
			||||||
 | 
						// copy in data to the VBO
 | 
				
			||||||
 | 
						glBindBuffer(GL_ARRAY_BUFFER, VBO);
 | 
				
			||||||
 | 
						glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
 | 
				
			||||||
 | 
						// Setup the indexing into the VBO data
 | 
				
			||||||
 | 
						glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
 | 
				
			||||||
 | 
						glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indicies), indicies, GL_STATIC_DRAW);
 | 
				
			||||||
 | 
						// Target the Atrib pointer in the VAO to the VBO inside it.
 | 
				
			||||||
 | 
						glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3*sizeof(f32), (void *)0);
 | 
				
			||||||
 | 
						// STart at Zero
 | 
				
			||||||
 | 
						glEnableVertexAttribArray(0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
 | 
				
			||||||
 | 
						// ??
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while(!glfwWindowShouldClose(window)) {
 | 
				
			||||||
 | 
							processInput(window);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// Do some rendering
 | 
				
			||||||
 | 
							glClearColor(0.0f, 0.1f, 0.3f, 1.0f);
 | 
				
			||||||
 | 
							glClear(GL_COLOR_BUFFER_BIT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							glUseProgram(shaderProgram);
 | 
				
			||||||
 | 
							glBindVertexArray(VAO);
 | 
				
			||||||
 | 
							glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
 | 
				
			||||||
 | 
							glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Finish up
 | 
				
			||||||
 | 
							glfwSwapBuffers(window);
 | 
				
			||||||
 | 
							glfwPollEvents();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						glfwTerminate();
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										6
									
								
								res/shaders/fragment.glsl
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								res/shaders/fragment.glsl
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,6 @@
 | 
				
			||||||
 | 
					#version 420 core
 | 
				
			||||||
 | 
					out vec4 FragColor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void main() {
 | 
				
			||||||
 | 
					    FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										6
									
								
								res/shaders/vertex.glsl
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								res/shaders/vertex.glsl
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,6 @@
 | 
				
			||||||
 | 
					#version 420 core
 | 
				
			||||||
 | 
					layout (location = 0) in vec3 aPos;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void main() {
 | 
				
			||||||
 | 
					    gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										1451
									
								
								src/glad.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1451
									
								
								src/glad.c
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										29
									
								
								src/lgl_callbacks.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								src/lgl_callbacks.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,29 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <GLFW/glfw3.h>
 | 
				
			||||||
 | 
					#include "lgl_callbacks.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void framebuffer_size_callback(
 | 
				
			||||||
 | 
						GLFWwindow* window, GLint width, GLint height) {
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						/*
 | 
				
			||||||
 | 
						GLint nwidth = width - 60;
 | 
				
			||||||
 | 
						GLint nheight = height - 60;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if(nwidth <= 60) {
 | 
				
			||||||
 | 
							nwidth = width;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if(nheight <= 60) {
 | 
				
			||||||
 | 
							nheight = height;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						glViewport(0, 0, nwidth, nheight);
 | 
				
			||||||
 | 
						*/
 | 
				
			||||||
 | 
						glViewport(0, 0, width, height);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void processInput(GLFWwindow *window) {
 | 
				
			||||||
 | 
						if(glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS ||
 | 
				
			||||||
 | 
							glfwGetKey(window, GLFW_KEY_Q) == GLFW_PRESS) {
 | 
				
			||||||
 | 
							glfwSetWindowShouldClose(window, true);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										10
									
								
								src/lgl_callbacks.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								src/lgl_callbacks.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,10 @@
 | 
				
			||||||
 | 
					#ifndef H__LPR_gl_callbacks
 | 
				
			||||||
 | 
					#define H__LPR_gl_callbacks
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <GLFW/glfw3.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void framebuffer_size_callback(
 | 
				
			||||||
 | 
						GLFWwindow* window, GLint width, GLint height);
 | 
				
			||||||
 | 
					void processInput(GLFWwindow *window);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
							
								
								
									
										47
									
								
								src/lgl_shader_tools.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								src/lgl_shader_tools.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,47 @@
 | 
				
			||||||
 | 
					//#include <GLFW/glfw3.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					#include <cassert>
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					#include <sys/stat.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define CONST_READSHADER_MAX_FN_LEN 256
 | 
				
			||||||
 | 
					#define CONST_READSHADER_MAX_FN_SIZE 32*1024
 | 
				
			||||||
 | 
					char *readshader(const char *fn) {
 | 
				
			||||||
 | 
						char shader_fn[CONST_READSHADER_MAX_FN_LEN];
 | 
				
			||||||
 | 
						assert(strlen(fn) + 9 < CONST_READSHADER_MAX_FN_LEN);
 | 
				
			||||||
 | 
						struct stat status_buffer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						snprintf(shader_fn, CONST_READSHADER_MAX_FN_LEN, "shaders/%s", fn);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						printf("%s\n", shader_fn);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (stat(shader_fn, &status_buffer) == -1) {
 | 
				
			||||||
 | 
							printf("Failed to stat file '%s'\n", shader_fn);
 | 
				
			||||||
 | 
							return NULL;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						assert(status_buffer.st_size < CONST_READSHADER_MAX_FN_SIZE-1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						FILE *fh = fopen(shader_fn, "r");
 | 
				
			||||||
 | 
						assert(fh != NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						char *shader_data = (char *)malloc(CONST_READSHADER_MAX_FN_SIZE);
 | 
				
			||||||
 | 
						assert(shader_data != NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						size_t read_bytes = fread((void *)shader_data, sizeof(char), 
 | 
				
			||||||
 | 
							CONST_READSHADER_MAX_FN_SIZE-1, fh);
 | 
				
			||||||
 | 
						assert(read_bytes < CONST_READSHADER_MAX_FN_SIZE-1);
 | 
				
			||||||
 | 
						shader_data[read_bytes] = '\0';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fclose(fh);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						return shader_data;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void freeshader(void *shader_fh) {
 | 
				
			||||||
 | 
						assert(shader_fh != NULL);
 | 
				
			||||||
 | 
						free(shader_fh);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										4
									
								
								src/lgl_shader_tools.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								src/lgl_shader_tools.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,4 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					char *readshader(const char *fn);
 | 
				
			||||||
 | 
					void freeshader(void *shader_fh);
 | 
				
			||||||
							
								
								
									
										17
									
								
								src/standard_ints.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								src/standard_ints.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,17 @@
 | 
				
			||||||
 | 
					#ifndef RENAUD_STANDARD_INTS
 | 
				
			||||||
 | 
					#define RENAUD_STANDARD_INTS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define u8 uint8_t
 | 
				
			||||||
 | 
					#define u16 uint16_t
 | 
				
			||||||
 | 
					#define u32 uint32_t
 | 
				
			||||||
 | 
					#define u64 uint64_t
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define i8 int8_t
 | 
				
			||||||
 | 
					#define i16 int16_t
 | 
				
			||||||
 | 
					#define i32 int32_t
 | 
				
			||||||
 | 
					#define i64 int64_t
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define f32 float
 | 
				
			||||||
 | 
					#define f64 double
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue