From 13d8e6e56359016de986fd65eca84c0bd56eb8ad Mon Sep 17 00:00:00 2001 From: Omar Mohamed Ali Mudhir Date: Sat, 14 Jan 2017 18:30:19 +0000 Subject: [PATCH] base setup for osx in place --- .gitignore | 3 + data/image.png | Bin 0 -> 132999 bytes engine.xcodeproj/project.pbxproj | 307 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcschemes/engine.xcscheme | 91 ++++++ .../xcschemes/xcschememanagement.plist | 22 ++ engine/app.cpp | 102 ++++++ engine/app.hpp | 22 ++ engine/image.cpp | 13 + engine/image.hpp | 13 + engine/main.cpp | 191 +++++++++++ engine/pch.h | 17 + engine/shader.cpp | 97 ++++++ engine/shader.hpp | 12 + engine/shape.cpp | 38 +++ engine/shape.hpp | 154 +++++++++ engine/texture.cpp | 36 ++ engine/texture.hpp | 18 + 18 files changed, 1143 insertions(+) create mode 100644 .gitignore create mode 100644 data/image.png create mode 100644 engine.xcodeproj/project.pbxproj create mode 100644 engine.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 engine.xcodeproj/xcuserdata/omimac.xcuserdatad/xcschemes/engine.xcscheme create mode 100644 engine.xcodeproj/xcuserdata/omimac.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 engine/app.cpp create mode 100644 engine/app.hpp create mode 100644 engine/image.cpp create mode 100644 engine/image.hpp create mode 100644 engine/main.cpp create mode 100644 engine/pch.h create mode 100644 engine/shader.cpp create mode 100644 engine/shader.hpp create mode 100644 engine/shape.cpp create mode 100644 engine/shape.hpp create mode 100644 engine/texture.cpp create mode 100644 engine/texture.hpp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fdbb84d --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +xcuserdata +libs + diff --git a/data/image.png b/data/image.png new file mode 100644 index 0000000000000000000000000000000000000000..646e3619f131ef19ff6b25d66d40ecf73ac12d0e GIT binary patch literal 132999 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

EbEnkIBETbE(lPTA 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

@tBUnY=?ti<%}Ag& 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 literal 0 HcmV?d00001 diff --git a/engine.xcodeproj/project.pbxproj b/engine.xcodeproj/project.pbxproj new file mode 100644 index 0000000..a344240 --- /dev/null +++ b/engine.xcodeproj/project.pbxproj @@ -0,0 +1,307 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + AD58E0531E107411006ACC15 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD58E0521E107411006ACC15 /* main.cpp */; }; + AD58E05A1E10752E006ACC15 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AD58E0591E10752E006ACC15 /* OpenGL.framework */; }; + AD58E05C1E107536006ACC15 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AD58E05B1E107536006ACC15 /* Cocoa.framework */; }; + AD58E05E1E10754F006ACC15 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AD58E05D1E10754F006ACC15 /* CoreFoundation.framework */; }; + AD58E0601E12DA86006ACC15 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AD58E05F1E12DA86006ACC15 /* CoreVideo.framework */; }; + AD58E0621E17F249006ACC15 /* data in CopyFiles */ = {isa = PBXBuildFile; fileRef = AD58E0611E17F23D006ACC15 /* data */; }; + AD58E0651E2A76FD006ACC15 /* shader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD58E0631E2A76FD006ACC15 /* shader.cpp */; }; + AD58E0681E2A7741006ACC15 /* image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD58E0661E2A7741006ACC15 /* image.cpp */; }; + AD58E06B1E2A774F006ACC15 /* texture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD58E0691E2A774F006ACC15 /* texture.cpp */; }; + AD58E06F1E2A80BC006ACC15 /* shape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD58E06D1E2A80BC006ACC15 /* shape.cpp */; }; + AD58E0721E2A90EF006ACC15 /* app.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD58E0701E2A90EF006ACC15 /* app.cpp */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + AD58E04D1E107411006ACC15 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 12; + dstPath = ""; + dstSubfolderSpec = 7; + files = ( + AD58E0621E17F249006ACC15 /* data in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + AD58E04F1E107411006ACC15 /* engine */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = engine; sourceTree = BUILT_PRODUCTS_DIR; }; + AD58E0521E107411006ACC15 /* main.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; path = main.cpp; sourceTree = ""; }; + AD58E0591E10752E006ACC15 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; }; + AD58E05B1E107536006ACC15 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + AD58E05D1E10754F006ACC15 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; }; + AD58E05F1E12DA86006ACC15 /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = System/Library/Frameworks/CoreVideo.framework; sourceTree = SDKROOT; }; + AD58E0611E17F23D006ACC15 /* data */ = {isa = PBXFileReference; lastKnownFileType = folder; path = data; sourceTree = ""; }; + AD58E0631E2A76FD006ACC15 /* shader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = shader.cpp; sourceTree = ""; }; + AD58E0641E2A76FD006ACC15 /* shader.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = shader.hpp; sourceTree = ""; }; + AD58E0661E2A7741006ACC15 /* image.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = image.cpp; sourceTree = ""; }; + AD58E0671E2A7741006ACC15 /* image.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = image.hpp; sourceTree = ""; }; + AD58E0691E2A774F006ACC15 /* texture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = texture.cpp; sourceTree = ""; }; + AD58E06A1E2A774F006ACC15 /* texture.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = texture.hpp; sourceTree = ""; }; + AD58E06C1E2A78BD006ACC15 /* pch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pch.h; sourceTree = ""; }; + AD58E06D1E2A80BC006ACC15 /* shape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = shape.cpp; sourceTree = ""; }; + AD58E06E1E2A80BC006ACC15 /* shape.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = shape.hpp; sourceTree = ""; }; + AD58E0701E2A90EF006ACC15 /* app.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = app.cpp; sourceTree = ""; }; + AD58E0711E2A90EF006ACC15 /* app.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = app.hpp; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + AD58E04C1E107411006ACC15 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + AD58E0601E12DA86006ACC15 /* CoreVideo.framework in Frameworks */, + AD58E05E1E10754F006ACC15 /* CoreFoundation.framework in Frameworks */, + AD58E05C1E107536006ACC15 /* Cocoa.framework in Frameworks */, + AD58E05A1E10752E006ACC15 /* OpenGL.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + AD58E0461E107411006ACC15 = { + isa = PBXGroup; + children = ( + AD58E0611E17F23D006ACC15 /* data */, + AD58E05F1E12DA86006ACC15 /* CoreVideo.framework */, + AD58E05D1E10754F006ACC15 /* CoreFoundation.framework */, + AD58E05B1E107536006ACC15 /* Cocoa.framework */, + AD58E0591E10752E006ACC15 /* OpenGL.framework */, + AD58E0511E107411006ACC15 /* engine */, + AD58E0501E107411006ACC15 /* Products */, + ); + sourceTree = ""; + }; + AD58E0501E107411006ACC15 /* Products */ = { + isa = PBXGroup; + children = ( + AD58E04F1E107411006ACC15 /* engine */, + ); + name = Products; + sourceTree = ""; + }; + AD58E0511E107411006ACC15 /* engine */ = { + isa = PBXGroup; + children = ( + AD58E0631E2A76FD006ACC15 /* shader.cpp */, + AD58E0641E2A76FD006ACC15 /* shader.hpp */, + AD58E0521E107411006ACC15 /* main.cpp */, + AD58E06D1E2A80BC006ACC15 /* shape.cpp */, + AD58E0701E2A90EF006ACC15 /* app.cpp */, + AD58E0711E2A90EF006ACC15 /* app.hpp */, + AD58E06E1E2A80BC006ACC15 /* shape.hpp */, + AD58E0661E2A7741006ACC15 /* image.cpp */, + AD58E0671E2A7741006ACC15 /* image.hpp */, + AD58E0691E2A774F006ACC15 /* texture.cpp */, + AD58E06A1E2A774F006ACC15 /* texture.hpp */, + AD58E06C1E2A78BD006ACC15 /* pch.h */, + ); + path = engine; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + AD58E04E1E107411006ACC15 /* engine */ = { + isa = PBXNativeTarget; + buildConfigurationList = AD58E0561E107411006ACC15 /* Build configuration list for PBXNativeTarget "engine" */; + buildPhases = ( + AD58E04B1E107411006ACC15 /* Sources */, + AD58E04C1E107411006ACC15 /* Frameworks */, + AD58E04D1E107411006ACC15 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = engine; + productName = engine; + productReference = AD58E04F1E107411006ACC15 /* engine */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + AD58E0471E107411006ACC15 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0720; + ORGANIZATIONNAME = "Omar Mohamed Ali Mudhir"; + TargetAttributes = { + AD58E04E1E107411006ACC15 = { + CreatedOnToolsVersion = 7.2; + }; + }; + }; + buildConfigurationList = AD58E04A1E107411006ACC15 /* Build configuration list for PBXProject "engine" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = AD58E0461E107411006ACC15; + productRefGroup = AD58E0501E107411006ACC15 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + AD58E04E1E107411006ACC15 /* engine */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + AD58E04B1E107411006ACC15 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + AD58E06F1E2A80BC006ACC15 /* shape.cpp in Sources */, + AD58E0651E2A76FD006ACC15 /* shader.cpp in Sources */, + AD58E06B1E2A774F006ACC15 /* texture.cpp in Sources */, + AD58E0721E2A90EF006ACC15 /* app.cpp in Sources */, + AD58E0531E107411006ACC15 /* main.cpp in Sources */, + AD58E0681E2A7741006ACC15 /* image.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + AD58E0541E107411006ACC15 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + /opt/local/include, + libs, + ); + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + AD58E0551E107411006ACC15 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + /opt/local/include, + libs, + ); + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + }; + name = Release; + }; + AD58E0571E107411006ACC15 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + AD58E0581E107411006ACC15 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + AD58E04A1E107411006ACC15 /* Build configuration list for PBXProject "engine" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + AD58E0541E107411006ACC15 /* Debug */, + AD58E0551E107411006ACC15 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + AD58E0561E107411006ACC15 /* Build configuration list for PBXNativeTarget "engine" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + AD58E0571E107411006ACC15 /* Debug */, + AD58E0581E107411006ACC15 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = AD58E0471E107411006ACC15 /* Project object */; +} diff --git a/engine.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/engine.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..2c9d68e --- /dev/null +++ b/engine.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/engine.xcodeproj/xcuserdata/omimac.xcuserdatad/xcschemes/engine.xcscheme b/engine.xcodeproj/xcuserdata/omimac.xcuserdatad/xcschemes/engine.xcscheme new file mode 100644 index 0000000..48a3201 --- /dev/null +++ b/engine.xcodeproj/xcuserdata/omimac.xcuserdatad/xcschemes/engine.xcscheme @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/engine.xcodeproj/xcuserdata/omimac.xcuserdatad/xcschemes/xcschememanagement.plist b/engine.xcodeproj/xcuserdata/omimac.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..d4e76f9 --- /dev/null +++ b/engine.xcodeproj/xcuserdata/omimac.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + engine.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + AD58E04E1E107411006ACC15 + + primary + + + + + diff --git a/engine/app.cpp b/engine/app.cpp new file mode 100644 index 0000000..a39d7df --- /dev/null +++ b/engine/app.cpp @@ -0,0 +1,102 @@ +#include "pch.h" +#include "app.hpp" + +App App::I; // singleton + +void App::create() +{ + width = 800; + height = 600; +} + +void App::init() +{ + static const char* shader_v = + "#version 150\n" + "uniform mat4 mvp;" + "in vec4 pos;" + "in vec2 uvs;" + "out vec2 uv;" + "void main(){" + " gl_Position = mvp * pos;" + " uv = uvs;" + "}"; + static const char* shader_f = + "#version 150\n" + "uniform sampler2D tex;" + "in vec2 uv;" + "out vec4 frag;" + "void main(){" + " frag = texture(tex, uv, 0.0);" + "}"; + static const char* shader_color_v = + "#version 150\n" + "uniform mat4 mvp;" + "in vec4 pos;" + "void main(){" + " gl_Position = mvp * pos;" + "}"; + static const char* shader_color_f = + "#version 150\n" + "uniform vec4 col;" + "out vec4 frag;" + "void main(){" + " frag = col;" + "}"; + shader.create(shader_v, shader_f); + shader_color.create(shader_color_v, shader_color_f); + plane.create<15>(.5f, .5f); + longPlane.create<1>(.3, .05f); + circle.create<6>(.5f); + if (!tex.load("data/image.png")) + printf("error loading image\n"); + + glViewport(0, 0, width, height); + glEnable(GL_TEXTURE); + glDisable(GL_DEPTH_TEST); + glPointSize(5); + glLineWidth(15); + + int n; + glGetIntegerv(GL_NUM_EXTENSIONS, &n); + for (int i = 0; i < n; i++) + { + const unsigned char* s = glGetStringi(GL_EXTENSIONS, i); + printf("GL ext %03d: %s\n", i, s); + } + printf("GL version: %s\n", glGetString(GL_VERSION)); + printf("GL vendor: %s\n", glGetString(GL_VENDOR)); + printf("GL renderer: %s\n", glGetString(GL_RENDERER)); + + GLfloat width_range[2]; + glGetFloatv(GL_LINE_WIDTH_RANGE, width_range); + printf("GL line range: %f - %f\n", width_range[0], width_range[1]); +} + +void App::update(float dt) +{ + static float theta = 0; + theta += M_PI * 0.5f * dt; + float red = fabsf(sinf(theta)); + + glm::mat4 proj = glm::perspective(glm::radians(85.f), 1.f, .1f, 100.f); + glm::mat4 model = glm::translate(glm::vec3(0, 0, 0)); + glm::mat4 view = glm::lookAt(glm::vec3(sinf(theta), 0, 1), glm::vec3(0, 0, 0), glm::vec3(0, 1, 0)); + auto mvp = proj * view * model; + + glClearColor(red, 0, 0, 1); + glClear(GL_COLOR_BUFFER_BIT); + shader.use(); + shader.u_mat4("mvp", glm::mat4()); + shader.u_int("tex", 0); + + glActiveTexture(GL_TEXTURE0); + tex.bind(); + //circle.draw_fill(); + tex.unbind(); + + shader_color.use(); + shader_color.u_mat4("mvp", glm::mat4()); + shader_color.u_vec4("col", {1, 1, 1, 1}); + circle.draw_stroke(); +} diff --git a/engine/app.hpp b/engine/app.hpp new file mode 100644 index 0000000..0cac64c --- /dev/null +++ b/engine/app.hpp @@ -0,0 +1,22 @@ +#pragma once + +#include "shader.hpp" +#include "shape.hpp" +#include "texture.hpp" + +class App +{ + Shader shader; + Shader shader_color; + Plane plane; + Plane longPlane; + Circle circle; + Texture2D tex; +public: + static App I; + int width; + int height; + void init(); + void create(); + void update(float dt); +}; diff --git a/engine/image.cpp b/engine/image.cpp new file mode 100644 index 0000000..9cf3234 --- /dev/null +++ b/engine/image.cpp @@ -0,0 +1,13 @@ +#include "pch.h" +#include "image.hpp" + +#define STB_IMAGE_IMPLEMENTATION +#include + +bool Image::load(std::string filename) +{ + stbi_set_flip_vertically_on_load(true); + uint8_t* buffer = stbi_load(filename.c_str(), &width, &height, &comp, 0); + m_data = std::unique_ptr(buffer); + return true; +} diff --git a/engine/image.hpp b/engine/image.hpp new file mode 100644 index 0000000..8cad34e --- /dev/null +++ b/engine/image.hpp @@ -0,0 +1,13 @@ +#pragma once + +class Image +{ + std::unique_ptr m_data; +public: + int width; + int height; + int comp; + bool load(std::string filename); + const uint8_t* data() const { return m_data.get(); } + int size() const { return width * height * comp; } +}; diff --git a/engine/main.cpp b/engine/main.cpp new file mode 100644 index 0000000..f3dfb6a --- /dev/null +++ b/engine/main.cpp @@ -0,0 +1,191 @@ +#include "pch.h" +#include "shader.hpp" +#include "shape.hpp" +#include "texture.hpp" +#include "image.hpp" +#include "app.hpp" + +#include +#include +#include +#include + +@interface View : NSOpenGLView +{ + CVDisplayLinkRef dl; +} +@end @implementation View +- (instancetype)initWithFrame:(NSRect)frameRect +{ + NSOpenGLPixelFormatAttribute attrs[] = + { + NSOpenGLPFADoubleBuffer, + NSOpenGLPFADepthSize, 24, + // Must specify the 3.2 Core Profile to use OpenGL 3.2 + NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion4_1Core, + // Multisample + NSOpenGLPFAMultisample, + NSOpenGLPFASamples, 2, + NSOpenGLPFASampleBuffers, 1, + 0 + }; + NSOpenGLPixelFormat *pf = [[NSOpenGLPixelFormat alloc] initWithAttributes:attrs]; + NSOpenGLContext* context = [[NSOpenGLContext alloc] initWithFormat:pf shareContext:nil]; + self = [super initWithFrame:frameRect pixelFormat:pf]; + [self setPixelFormat:pf]; + [self setOpenGLContext:context]; + return self; +} +- (void)prepareOpenGL +{ + NSLog(@"prepare"); + + // Synchronize buffer swaps with vertical refresh rate + GLint swapInt = 1; + [[self openGLContext] setValues:&swapInt forParameter:NSOpenGLCPSwapInterval]; + + // Create a display link capable of being used with all active displays + CVDisplayLinkCreateWithActiveCGDisplays(&dl); + + // Set the renderer output callback function + CVDisplayLinkSetOutputCallback(dl, &MyDisplayLinkCallback, (__bridge void*)self); + + // Set the display link for the current renderer + CGLContextObj cglContext = [[self openGLContext] CGLContextObj]; + CGLPixelFormatObj cglPixelFormat = [[self pixelFormat] CGLPixelFormatObj]; + CVDisplayLinkSetCurrentCGDisplayFromOpenGLContext(dl, cglContext, cglPixelFormat); + + // Activate the display link + CVDisplayLinkStart(dl); + + CGLEnable([self.openGLContext CGLContextObj], kCGLCECrashOnRemovedFunctions); + + App::I.init(); +} + +// This is the renderer output callback function +static CVReturn MyDisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeStamp* now, + const CVTimeStamp* outputTime, CVOptionFlags flagsIn, CVOptionFlags* flagsOut, void* displayLinkContext) +{ + CVReturn result = [(__bridge View*)displayLinkContext getFrameForTime:outputTime]; + return result; +} + +- (CVReturn)getFrameForTime:(const CVTimeStamp*)outputTime +{ + static double _timeFreq = CVGetHostClockFrequency(); + static double _prevTime = (double)outputTime->hostTime / _timeFreq; + double hostTime = (double)outputTime->hostTime; + double now = hostTime / _timeFreq; + + // this will not update unless 1/30th of a second has passed since the last update + if ( now < _prevTime + (1.0 / 30.0) ) + { + // Add your drawing codes here + [[self openGLContext] makeCurrentContext]; + + App::I.update(now - _prevTime); + + [[self openGLContext] flushBuffer]; + // returning NO will cause the layer to NOT be redrawn + return NO; + } + else + { + // change whatever you want to change here, as a function of time elapsed + _prevTime = now; + // return YES to have your layer redrawn + return YES; + } + + return kCVReturnSuccess; +} + +- (void)dealloc +{ + // Release the display link + CVDisplayLinkRelease(dl); +} + +- (void)drawRect:(NSRect)dirtyRect +{ + NSLog(@"drawRect"); +} +@end + +@interface Window : NSWindow +@end @implementation Window +- (void)keyDown:(NSEvent *)theEvent +{ + [[self windowController] keyDown:theEvent]; +} +@end + +@interface Controller : NSWindowController +@end @implementation Controller +- (void)keyDown:(NSEvent *)theEvent +{ + unichar c = [[theEvent charactersIgnoringModifiers] characterAtIndex:0]; + if (c == 27) + { + [[NSApplication sharedApplication] terminate:nil]; + } +} +@end + +@interface AppOSX : NSApplication +{ + Window* window; + Controller* controller; + View* view; +} +@end @implementation AppOSX +- (instancetype)init +{ + self = [super init]; + [self setActivationPolicy:NSApplicationActivationPolicyRegular]; // make it to the front + [self setDelegate:self]; + return self; +} +- (void)applicationDidFinishLaunching:(NSNotification *)notification +{ + auto& app = App::I; + app.create(); + NSRect r = NSMakeRect(0, 0, app.width, app.height); + + view = [[View alloc] initWithFrame:r]; + + window = [[Window alloc] initWithContentRect:r + styleMask:NSTitledWindowMask|NSMiniaturizableWindowMask + backing:NSBackingStoreBuffered + defer:NO]; + [window setTitle:@"hello engine"]; + [window center]; + [window makeKeyAndOrderFront:controller]; + [window setContentView:view]; + + controller = [[Controller alloc] initWithWindow:window]; + + auto menubar = [NSMenu new]; + auto appMenuItem = [NSMenuItem new]; + [menubar addItem:appMenuItem]; + [self setMainMenu:menubar]; + + auto appMenu = [NSMenu new]; + auto appName = [[NSProcessInfo processInfo] processName]; + auto quitTitle = [@"Quit " stringByAppendingString:appName]; + auto quitMenuItem = [[NSMenuItem alloc] initWithTitle:quitTitle + action:@selector(terminate:) keyEquivalent:@"q"]; + [appMenu addItem:quitMenuItem]; + [appMenuItem setSubmenu:appMenu]; + + NSLog(@"app launched"); +} +@end + +int main(int argc, const char * argv[]) +{ + AppOSX* app = [AppOSX sharedApplication]; + [app run]; + return 0; +} diff --git a/engine/pch.h b/engine/pch.h new file mode 100644 index 0000000..b3dd34a --- /dev/null +++ b/engine/pch.h @@ -0,0 +1,17 @@ +#ifndef pch_h +#define pch_h + +#include +#include + +#include + +#define GLM_FORCE_RADIANS +#define GLM_SWIZZLE +#include +#include +#include +#include +#include + +#endif diff --git a/engine/shader.cpp b/engine/shader.cpp new file mode 100644 index 0000000..9c30763 --- /dev/null +++ b/engine/shader.cpp @@ -0,0 +1,97 @@ +#include "pch.h" +#include "shader.hpp" + +bool Shader::create(std::string vertex, std::string fragment) +{ + GLint status; + static char infolog[4096]; + int infolen; + const GLchar* source; + + auto vs = glCreateShader(GL_VERTEX_SHADER); + if (!vs) + { + return false; + } + source = vertex.c_str(); + glShaderSource(vs, 1, &source, nullptr); + glCompileShader(vs); + glGetShaderiv(vs, GL_COMPILE_STATUS, &status); + glGetShaderInfoLog(vs, sizeof(infolog), &infolen, infolog); + if (infolen > 0) + printf("VERTEX SHADER:\n%s", infolog); + if (status == 0) + { + glDeleteShader(vs); + return false; + } + + auto fs = glCreateShader(GL_FRAGMENT_SHADER); + if (!fs) + { + glDeleteShader(vs); + return false; + } + source = fragment.c_str(); + glShaderSource(fs, 1, &source, nullptr); + glCompileShader(fs); + glGetShaderiv(fs, GL_COMPILE_STATUS, &status); + glGetShaderInfoLog(fs, sizeof(infolog), &infolen, infolog); + if (infolen > 0) + printf("FRAGMENT SHADER:\n%s", infolog); + if (status == 0) + { + glDeleteShader(vs); + glDeleteShader(fs); + return false; + } + + auto ps = glCreateProgram(); + if (!ps) + { + glDeleteShader(vs); + glDeleteShader(fs); + return false; + } + glAttachShader(ps, vs); + glAttachShader(ps, fs); + glDeleteShader(vs); + glDeleteShader(fs); + + glBindAttribLocation(ps, 0, "pos"); + glBindAttribLocation(ps, 1, "uvs"); + + glLinkProgram(ps); + glGetShaderiv(ps, GL_LINK_STATUS, &status); + glGetShaderInfoLog(ps, sizeof(infolog), &infolen, infolog); + if (infolen > 0) + printf("LINK SHADER:\n%s", infolog); + if (status == 0) + { + glDeleteProgram(ps); + return false; + } + + prog = ps; + + return true; +} +void Shader::use() +{ + glUseProgram(prog); +} +void Shader::u_vec4(std::string name, const glm::vec4& v) +{ + auto loc = glGetUniformLocation(prog, name.c_str()); + glUniform4fv(loc, 1, glm::value_ptr(v)); +} +void Shader::u_mat4(std::string name, const glm::mat4& m) +{ + auto loc = glGetUniformLocation(prog, name.c_str()); + glUniformMatrix4fv(loc, 1, GL_FALSE, glm::value_ptr(m)); +} +void Shader::u_int(std::string name, int i) +{ + auto loc = glGetUniformLocation(prog, name.c_str()); + glUniform1i(loc, i); +} diff --git a/engine/shader.hpp b/engine/shader.hpp new file mode 100644 index 0000000..236d1d2 --- /dev/null +++ b/engine/shader.hpp @@ -0,0 +1,12 @@ +#pragma once + +class Shader +{ + GLuint prog; +public: + bool create(std::string vertex, std::string fragment); + void use(); + void u_vec4(std::string name, const glm::vec4& v); + void u_mat4(std::string name, const glm::mat4& m); + void u_int(std::string name, int i); +}; diff --git a/engine/shape.cpp b/engine/shape.cpp new file mode 100644 index 0000000..199c2d4 --- /dev/null +++ b/engine/shape.cpp @@ -0,0 +1,38 @@ +#include "pch.h" +#include "shape.hpp" + +void Shape::create_buffers(GLvoid* idx, GLvoid* vertices, int isize, int vsize) +{ + glGenBuffers(2, buffers); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffers[1]); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, isize, idx, GL_STATIC_DRAW); + glBindBuffer(GL_ARRAY_BUFFER, buffers[0]); + glBufferData(GL_ARRAY_BUFFER, vsize, vertices, GL_STATIC_DRAW); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + glBindBuffer(GL_ARRAY_BUFFER, 0); + + glGenVertexArrays(2, arrays); + + for (int i = 0; i < 2; i++) + { + glBindVertexArray(arrays[i]); + glEnableVertexAttribArray(0); + glEnableVertexAttribArray(1); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffers[1]); + glBindBuffer(GL_ARRAY_BUFFER, buffers[0]); + glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, sizeof(vertex_t), (GLvoid*)0); + glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, sizeof(vertex_t), (GLvoid*)offsetof(vertex_t, uvs)); + } + + glBindVertexArray(0); +} +void Shape::draw_fill() const +{ + glBindVertexArray(arrays[0]); + glDrawElements(GL_TRIANGLES, count[0], GL_UNSIGNED_SHORT, ioff[0]); +} +void Shape::draw_stroke() const +{ + glBindVertexArray(arrays[1]); + glDrawElements(GL_LINES, count[1], GL_UNSIGNED_SHORT, ioff[1]); +} diff --git a/engine/shape.hpp b/engine/shape.hpp new file mode 100644 index 0000000..4e79e0f --- /dev/null +++ b/engine/shape.hpp @@ -0,0 +1,154 @@ +#pragma once + +class Shape +{ +protected: + GLuint buffers[2]; + GLuint arrays[2]; + GLuint count[2]; + GLvoid* ioff[2]; + struct vertex_t { glm::vec4 pos; glm::vec2 uvs; }; +public: + void create_buffers(GLvoid* idx, GLvoid* vertices, int isize, int vsize); + void draw_fill() const; + void draw_stroke() const; +}; + +class Plane : public Shape +{ +public: + template + bool create(float w, float h) + { + + static GLshort idx[div * div * 6 + 4]; + static vertex_t vertices[(div+1)*(div+1)]; + + count[0] = div * div * 6; + count[1] = 4; + ioff[0] = (GLvoid*)4; + ioff[1] = (GLvoid*)0; + + const float dx = w / div; + const float dy = h / div; + const float ox = -w * 0.5f; + const float oy = -h * 0.5f; + int v_index = 0; + for (int y = 0; y <= div; y++) + { + for (int x = 0; x <= div; x++) + { + vertex_t v; + v.pos.x = ox + dx * (float)x; + v.pos.y = oy + dy * (float)y; + v.pos.z = 0; + v.pos.w = 1; + v.uvs = glm::vec2(x, y) / (float)div; + vertices[v_index++] = v; + } + } + + // generate indices + auto pidx = idx; + *pidx++ = 0; + *pidx++ = div; + *pidx++ = (div+1)*(div); + *pidx++ = (div+1)*(div+1)-1; + for (int y = 0; y < div; y++) + { + int i = y * (div+1); + for (int x = 0; x < div; x++) + { + *pidx++ = i; + *pidx++ = i + div + 1; + *pidx++ = i + div + 2; + *pidx++ = i; + *pidx++ = i + div + 2; + *pidx++ = i + 1; + i++; + } + } + + create_buffers(idx, vertices, sizeof(idx), sizeof(vertices)); + + return true; + } +}; + +class Circle : public Shape +{ +public: + template + bool create(float radius) + { + static GLushort idx[div * 3 + div * 2]; + static vertex_t vertices[div + 1]; + + count[0] = div * 3; + count[1] = div * 2; + ioff[0] = (GLvoid*)0; + ioff[1] = (GLvoid*)(div * 3 * sizeof(idx[0])); + + auto pidx = idx; + auto pidx2 = idx + div * 3; + for (int i = 0; i < div; i++) + { + vertex_t v; + float theta = (float)i / div * M_PI * 2.f; + v.pos.x = sinf(theta) * radius; + v.pos.y = cosf(theta) * radius; + v.pos.z = 0; + v.pos.w = 1; + v.uvs = v.pos.xy() * 0.5f + 0.5f; + vertices[i+1] = v; + + *pidx++ = 0; + *pidx++ = i+1; + *pidx++ = ((i+1) % div) + 1; + + *pidx2++ = 1 + i; + *pidx2++ = 1 + ((i+1) % div); + } + vertices[0].pos = { 0, 0, 0, 1 }; + vertices[0].uvs = { 0.5f, 0.5f }; + + create_buffers(idx, vertices, sizeof(idx), sizeof(vertices)); + + return true; + } + template + bool create(float radius_out, float radius_in) + { + static GLubyte idx[div*6 + div*2]; + static vertex_t vertices[div * 2]; + + count[0] = div * 6; + count[1] = div * 2; + + auto pidx = idx; + auto pidx2 = idx + div * 6; + for (int i = 0; i < div; i++) + { + float theta = (float)i / div * M_PI * 2.f; + vertices[i*2].pos = { sinf(theta) * radius_in, cosf(theta) * radius_in, 0, 1 }; + vertices[i*2].uvs = vertices[i*2].pos.xy() * 0.5f + 0.5f; + vertices[i*2+1].pos = { sinf(theta) * radius_out, cosf(theta) * radius_out, 0, 1 }; + vertices[i*2+1].uvs = vertices[i*2+1].pos.xy() * 0.5f + 0.5f; + + *pidx++ = i*2; // A + *pidx++ = i*2+1; // B + *pidx++ = ((i+1)*2+1) % (div*2); // C + + *pidx++ = i*2; // A + *pidx++ = ((i+1)*2+1) % (div*2); // C + *pidx++ = ((i+1)*2) % (div*2); // D + + *pidx2++ = 1 + i; + *pidx2++ = 1 + ((i+1) % div); + } + + create_buffers(idx, vertices, sizeof(idx), sizeof(vertices)); + + return true; + } +}; diff --git a/engine/texture.cpp b/engine/texture.cpp new file mode 100644 index 0000000..2f0938b --- /dev/null +++ b/engine/texture.cpp @@ -0,0 +1,36 @@ +#include "pch.h" +#include "texture.hpp" +#include "image.hpp" + +bool Texture2D::create(int width, int height, GLint format, const uint8_t* data, GLint filter, GLint wrap) +{ + m_width = width; + m_height = height; + m_format = format; + glGenTextures(1, &m_tex); + bind(); + glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, format, GL_UNSIGNED_BYTE, data); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filter); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filter); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap); + unbind(); + return true; +} +bool Texture2D::create(const Image& img) +{ + static GLint formats[] = { GL_R, GL_RG, GL_RGB, GL_RGBA }; + return create(img.width, img.height, formats[img.comp - 1], img.data()); +} +bool Texture2D::load(std::string filename) +{ + Image img; + if (!img.load(filename)) + return false; + return create(img); +} +void Texture2D::update(const uint8_t* data) +{ + bind(); + glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, m_width, m_height, m_format, GL_UNSIGNED_BYTE, data); +} diff --git a/engine/texture.hpp b/engine/texture.hpp new file mode 100644 index 0000000..08b40b5 --- /dev/null +++ b/engine/texture.hpp @@ -0,0 +1,18 @@ +#pragma once + +class Texture2D +{ + GLuint m_tex; + int m_width; + int m_height; + GLint m_format; +public: + bool create(int width, int height, GLint format = GL_RGBA, + const uint8_t* data = nullptr, GLint filter = GL_LINEAR, GLint wrap = GL_CLAMP_TO_EDGE); + bool create(const class Image& img); + bool load(std::string filename); + void destroy() { glDeleteTextures(1, &m_tex); } + void bind() const { glBindTexture(GL_TEXTURE_2D, m_tex); } + void unbind() const { glBindTexture(GL_TEXTURE_2D, 0); } + void update(const uint8_t* data); +};