diff --git a/OpenGL/OpenGL.vcxproj b/OpenGL/OpenGL.vcxproj
index 1a15d8b..0226185 100644
--- a/OpenGL/OpenGL.vcxproj
+++ b/OpenGL/OpenGL.vcxproj
@@ -22,7 +22,7 @@
15.0
{BE30292B-9C31-474C-AC8C-E1BFA61BD1A1}
OpenGL
- 10.0.17134.0
+ 10.0.16299.0
diff --git a/OpenGL/display.cpp b/OpenGL/display.cpp
index 61ba2a8..4ee6604 100644
--- a/OpenGL/display.cpp
+++ b/OpenGL/display.cpp
@@ -6,6 +6,7 @@
Display::Display(int width, int height, const std::string& title) {
SDL_Init(SDL_INIT_VIDEO);
+ SDL_GL_SetSwapInterval(0);
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
@@ -21,20 +22,15 @@ Display::Display(int width, int height, const std::string& title) {
std::cerr << "GLEW Failed to initialize" << std::endl;
}
+ SDL_WarpMouseInWindow(m_window, width / 2, height / 2);
+ SDL_SetRelativeMouseMode(SDL_TRUE);
+
m_isClosed = false;
std::cout << "Display initialized and gl context successfuly created" << std::endl;
}
void Display::Update() {
SDL_GL_SwapWindow(m_window);
-
- SDL_Event e;
-
- while (SDL_PollEvent(&e)) {
- if (e.type == SDL_QUIT) {
- m_isClosed = true;
- }
- }
}
bool Display::isClosed() {
@@ -45,4 +41,5 @@ Display::~Display() {
SDL_GL_DeleteContext(m_glContext);
SDL_DestroyWindow(m_window);
SDL_Quit();
+ m_isClosed = true;
}
diff --git a/OpenGL/main.cpp b/OpenGL/main.cpp
index 58973e6..05fa43d 100644
--- a/OpenGL/main.cpp
+++ b/OpenGL/main.cpp
@@ -42,37 +42,55 @@ int main(int argc, char** argv) {
ShaderMode mode = ShaderMode::SHADER_COLOUR;
Mesh mesh(vertices, indices, sizeof(vertices) / sizeof(vertices[0]));
- Texture chanceCube("C:/Users/Ben/Desktop/crumpet-engine/resources/textures/chance-cube.jpg");
- Shader shader("C:/Users/Ben/Desktop/crumpet-engine/resources/shaders/simple2d");
+ // std::string resourceFolder = "C:/Users/Ben/Desktop/crumpet-engine/"; // Laptop
+ std::string resourceFolder = "E:/Games/Practicing/OpenGL/"; // PC
+
+ Shader texShader(resourceFolder + "resources/shaders/tex");
+ Shader colourShader(resourceFolder + "resources/shaders/col");
+ Shader gradientShader(resourceFolder + "resources/shaders/gradient");
+ Shader texGradientShader(resourceFolder + "resources/shaders/texGrad");
+
+ Texture chanceCube(resourceFolder + "resources/textures/chance-cube.jpg");
- unsigned int ticks = SDL_GetTicks();
- unsigned int frames = 0;
+ SDL_Event event;
while(!display.isClosed()) {
glClear(GL_COLOR_BUFFER_BIT);
switch(mode) {
case ShaderMode::SHADER_TEXURE:
+ chanceCube.Bind(0);
+ texShader.Bind();
break;
case ShaderMode::SHADER_COLOUR:
+ colourShader.Bind();
break;
case ShaderMode::SHADER_GRADIENT:
+ gradientShader.Bind();
break;
case ShaderMode::SHADER_TEXGRADIENT:
- break;
- default:
+ chanceCube.Bind(0);
+ texGradientShader.Bind();
break;
}
- shader.Bind();
-
- chanceCube.Bind(0);
mesh.Draw();
+ while (SDL_PollEvent(&event) != 0) {
+ if (event.type == SDL_KEYDOWN) {
+ if (mode == ShaderMode::SHADER_TEXURE) mode = ShaderMode::SHADER_COLOUR;
+ else if (mode == ShaderMode::SHADER_COLOUR) mode = ShaderMode::SHADER_GRADIENT;
+ else if (mode == ShaderMode::SHADER_GRADIENT) mode = ShaderMode::SHADER_TEXGRADIENT;
+ else if (mode == ShaderMode::SHADER_TEXGRADIENT) mode = ShaderMode::SHADER_TEXURE;
+ if (event.key.keysym.sym == SDLK_ESCAPE) {
+ display.~Display();
+ }
+ }
+ }
+
display.Update();
- frames++;
}
display.~Display();
diff --git a/resources/shaders/col_fragment.glsl b/resources/shaders/col_fragment.glsl
new file mode 100644
index 0000000..21d6b09
--- /dev/null
+++ b/resources/shaders/col_fragment.glsl
@@ -0,0 +1,11 @@
+#version 330 core
+out vec4 FragColor;
+
+in vec3 ourColor;
+in vec2 TexCoord;
+
+uniform sampler2D ourTexture;
+
+void main() {
+ FragColor = vec4(0.25, 0.9, 1.0, 1.0);
+}
\ No newline at end of file
diff --git a/resources/shaders/simple2d_vertex.glsl b/resources/shaders/col_vertex.glsl
similarity index 100%
rename from resources/shaders/simple2d_vertex.glsl
rename to resources/shaders/col_vertex.glsl
diff --git a/resources/shaders/gradient_fragment.glsl b/resources/shaders/gradient_fragment.glsl
new file mode 100644
index 0000000..f741038
--- /dev/null
+++ b/resources/shaders/gradient_fragment.glsl
@@ -0,0 +1,11 @@
+#version 330 core
+out vec4 FragColor;
+
+in vec3 ourColor;
+in vec2 TexCoord;
+
+uniform sampler2D ourTexture;
+
+void main() {
+ FragColor = vec4(ourColor, 1.0);
+}
\ No newline at end of file
diff --git a/resources/shaders/gradient_vertex.glsl b/resources/shaders/gradient_vertex.glsl
new file mode 100644
index 0000000..7de44d9
--- /dev/null
+++ b/resources/shaders/gradient_vertex.glsl
@@ -0,0 +1,13 @@
+#version 330 core
+layout (location = 0) in vec3 aPos;
+layout (location = 1) in vec3 aColor;
+layout (location = 2) in vec2 aTexCoord;
+
+out vec3 ourColor;
+out vec2 TexCoord;
+
+void main() {
+ gl_Position = vec4(aPos, 1.0);
+ ourColor = aColor;
+ TexCoord = aTexCoord;
+}
\ No newline at end of file
diff --git a/resources/shaders/simple2d_fragment.glsl b/resources/shaders/texGrad_fragment.glsl
similarity index 100%
rename from resources/shaders/simple2d_fragment.glsl
rename to resources/shaders/texGrad_fragment.glsl
diff --git a/resources/shaders/texGrad_vertex.glsl b/resources/shaders/texGrad_vertex.glsl
new file mode 100644
index 0000000..7de44d9
--- /dev/null
+++ b/resources/shaders/texGrad_vertex.glsl
@@ -0,0 +1,13 @@
+#version 330 core
+layout (location = 0) in vec3 aPos;
+layout (location = 1) in vec3 aColor;
+layout (location = 2) in vec2 aTexCoord;
+
+out vec3 ourColor;
+out vec2 TexCoord;
+
+void main() {
+ gl_Position = vec4(aPos, 1.0);
+ ourColor = aColor;
+ TexCoord = aTexCoord;
+}
\ No newline at end of file
diff --git a/resources/shaders/tex_fragment.glsl b/resources/shaders/tex_fragment.glsl
new file mode 100644
index 0000000..1b8c9b0
--- /dev/null
+++ b/resources/shaders/tex_fragment.glsl
@@ -0,0 +1,11 @@
+#version 330 core
+out vec4 FragColor;
+
+in vec3 ourColor;
+in vec2 TexCoord;
+
+uniform sampler2D ourTexture;
+
+void main() {
+ FragColor = texture(ourTexture, TexCoord);
+}
\ No newline at end of file
diff --git a/resources/shaders/tex_vertex.glsl b/resources/shaders/tex_vertex.glsl
new file mode 100644
index 0000000..7de44d9
--- /dev/null
+++ b/resources/shaders/tex_vertex.glsl
@@ -0,0 +1,13 @@
+#version 330 core
+layout (location = 0) in vec3 aPos;
+layout (location = 1) in vec3 aColor;
+layout (location = 2) in vec2 aTexCoord;
+
+out vec3 ourColor;
+out vec2 TexCoord;
+
+void main() {
+ gl_Position = vec4(aPos, 1.0);
+ ourColor = aColor;
+ TexCoord = aTexCoord;
+}
\ No newline at end of file