mirror of
https://github.com/MichaelFisher1997/opengl-cpp.git
synced 2025-04-27 14:13:10 +00:00
added uniforms and played with vsync
This commit is contained in:
parent
13d3b73357
commit
c8764b135a
@ -9,6 +9,9 @@ void main() {
|
|||||||
#shader fragment
|
#shader fragment
|
||||||
#version 330 core
|
#version 330 core
|
||||||
layout(location = 0) out vec4 color;
|
layout(location = 0) out vec4 color;
|
||||||
|
|
||||||
|
uniform vec4 u_Color;
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
color = vec4(0.2, 0.3, 0.8, 1.0);
|
color = u_Color;
|
||||||
};
|
};
|
||||||
|
24
src/sdl.cpp
24
src/sdl.cpp
@ -1,6 +1,7 @@
|
|||||||
#include <GL/glew.h> // Include GLEW before <SDL2/SDL.h>?
|
#include <GL/glew.h> // Include GLEW before <SDL2/SDL.h>?
|
||||||
#include "sdl.hpp"
|
#include "sdl.hpp"
|
||||||
#include "colormod.h"
|
#include "colormod.h"
|
||||||
|
#include <SDL2/SDL_video.h>
|
||||||
#include <alloca.h>
|
#include <alloca.h>
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
@ -23,7 +24,6 @@
|
|||||||
#define DEBUG_BREAK() raise(SIGTRAP)
|
#define DEBUG_BREAK() raise(SIGTRAP)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// ASSERT macro that shows file, line, and the failed expression
|
// ASSERT macro that shows file, line, and the failed expression
|
||||||
#define ASSERT(x) \
|
#define ASSERT(x) \
|
||||||
do { \
|
do { \
|
||||||
@ -53,7 +53,10 @@ SdlWindow::SdlWindow(const char* title, int width, int height)
|
|||||||
m_height(height),
|
m_height(height),
|
||||||
m_glContext(nullptr),
|
m_glContext(nullptr),
|
||||||
m_windowedWidth(width),
|
m_windowedWidth(width),
|
||||||
m_windowedHeight(height)
|
m_windowedHeight(height),
|
||||||
|
r(0.0f),
|
||||||
|
location(),
|
||||||
|
increment(0.05f)
|
||||||
{
|
{
|
||||||
// 1. Set attributes
|
// 1. Set attributes
|
||||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
|
||||||
@ -91,7 +94,7 @@ SdlWindow::SdlWindow(const char* title, int width, int height)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// 5. Set vsync (optional)
|
// 5. Set vsync (optional)
|
||||||
SDL_GL_SetSwapInterval(1);
|
SDL_GL_SetSwapInterval(1); //Vsync
|
||||||
|
|
||||||
// 6. Mark as running
|
// 6. Mark as running
|
||||||
m_isRunning = true;
|
m_isRunning = true;
|
||||||
@ -126,6 +129,11 @@ SdlWindow::SdlWindow(const char* title, int width, int height)
|
|||||||
unsigned int shader = createShader(source.VertexSource, source.FragmentSource);
|
unsigned int shader = createShader(source.VertexSource, source.FragmentSource);
|
||||||
GLCall(glUseProgram(shader));
|
GLCall(glUseProgram(shader));
|
||||||
|
|
||||||
|
GLCall(int location = glGetUniformLocation(shader, "u_Color"));
|
||||||
|
ASSERT(location != -1); // -1 is an error
|
||||||
|
GLCall(glUniform4f(location, 0.8f, 0.3f, 0.8f, 1.0f));
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SdlWindow::~SdlWindow() {
|
SdlWindow::~SdlWindow() {
|
||||||
@ -207,16 +215,24 @@ SDL_Event event;
|
|||||||
|
|
||||||
void SdlWindow::update() {
|
void SdlWindow::update() {
|
||||||
// Update game/application logic here
|
// Update game/application logic here
|
||||||
|
if (r > 1.0f) {
|
||||||
|
increment = -0.05f;
|
||||||
|
} else if (r < 0.0f) {
|
||||||
|
increment = 0.05f;
|
||||||
|
}
|
||||||
|
r += increment;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SdlWindow::render() {
|
void SdlWindow::render() {
|
||||||
// Use GL calls instead of SDL’s renderer
|
// Use GL calls instead of SDL’s renderer
|
||||||
GLCall(glClearColor(0.0f, 0.0f, 0.0f, 1.0f));
|
GLCall(glClearColor(0.0f, 0.0f, 0.0f, 1.0f)); //background
|
||||||
GLCall(glClear(GL_COLOR_BUFFER_BIT));
|
GLCall(glClear(GL_COLOR_BUFFER_BIT));
|
||||||
|
|
||||||
// TODO: Draw with OpenGL here (shaders, triangles, etc.)
|
// TODO: Draw with OpenGL here (shaders, triangles, etc.)
|
||||||
|
GLCall(glUniform4f( location, r, 0.3f, 0.8f, 1.0f));
|
||||||
//glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, nullptr);
|
//glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, nullptr);
|
||||||
GLCall(glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, nullptr)); //macro assert for debugging
|
GLCall(glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, nullptr)); //macro assert for debugging
|
||||||
|
|
||||||
// Swap buffers
|
// Swap buffers
|
||||||
SDL_GL_SwapWindow(m_window);
|
SDL_GL_SwapWindow(m_window);
|
||||||
}
|
}
|
||||||
|
@ -53,7 +53,10 @@ private:
|
|||||||
int m_height;
|
int m_height;
|
||||||
int m_windowedWidth; // stored width before fullscreen
|
int m_windowedWidth; // stored width before fullscreen
|
||||||
int m_windowedHeight; // stored height before fullscreen
|
int m_windowedHeight; // stored height before fullscreen
|
||||||
|
float r;
|
||||||
|
int location;
|
||||||
SDL_GLContext m_glContext;
|
SDL_GLContext m_glContext;
|
||||||
|
float increment;
|
||||||
// temp shader stuff
|
// temp shader stuff
|
||||||
std::string vetexShader;
|
std::string vetexShader;
|
||||||
std::string fragmentShader;
|
std::string fragmentShader;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user