stuff
This commit is contained in:
@@ -16,6 +16,8 @@ add_executable(
|
||||
src/classes/Classes.h
|
||||
src/classes/Shader.h
|
||||
src/classes/Shader.cpp
|
||||
src/classes/Shape.h
|
||||
src/classes/Shape.cpp
|
||||
src/classes/debug.cpp
|
||||
src/classes/debug.h
|
||||
src/classes/ElementBufferObject.h
|
||||
|
28
src/classes/Shape.cpp
Normal file
28
src/classes/Shape.cpp
Normal file
@@ -0,0 +1,28 @@
|
||||
#include "Shape.h"
|
||||
#include "../glad/glad.h"
|
||||
#include "ElementBufferObject.h"
|
||||
#include "Shader.h"
|
||||
#include "VertexArrayObject.h"
|
||||
#include "VertexBufferObject.h"
|
||||
|
||||
Shape::Shape(float vert[], unsigned int vertCount, unsigned int indi[],
|
||||
unsigned int indiCount)
|
||||
: VBO(vert, vertCount), EBO(indi, indiCount), indi_count(indiCount) {
|
||||
VAO.Bind();
|
||||
VBO.Bind();
|
||||
EBO.Bind();
|
||||
|
||||
VAO.LinkVBO(VBO, 0);
|
||||
}
|
||||
|
||||
void Shape::Render(Shader &shader) {
|
||||
shader.Activate();
|
||||
VAO.Bind();
|
||||
glDrawElements(GL_TRIANGLES, indi_count, GL_UNSIGNED_INT, 0);
|
||||
}
|
||||
|
||||
void Shape::Delete() {
|
||||
VAO.Delete();
|
||||
VBO.Delete();
|
||||
EBO.Delete();
|
||||
}
|
26
src/classes/Shape.h
Normal file
26
src/classes/Shape.h
Normal file
@@ -0,0 +1,26 @@
|
||||
#ifndef SHAPE_H
|
||||
#define SHAPE_H
|
||||
|
||||
#include "../glad/glad.h"
|
||||
#include "ElementBufferObject.h"
|
||||
#include "Shader.h"
|
||||
#include "VertexArrayObject.h"
|
||||
#include "VertexBufferObject.h"
|
||||
|
||||
class Shape {
|
||||
public:
|
||||
VertexArrayObject VAO;
|
||||
VertexBufferObject VBO;
|
||||
ElementBufferObject EBO;
|
||||
|
||||
unsigned indi_count;
|
||||
|
||||
Shape(float vert[], unsigned int vertCount, unsigned int indi[],
|
||||
unsigned int indiCount);
|
||||
|
||||
virtual void Render(Shader &shader);
|
||||
|
||||
virtual void Delete();
|
||||
};
|
||||
|
||||
#endif
|
64
src/main.cpp
64
src/main.cpp
@@ -4,6 +4,7 @@
|
||||
*/
|
||||
|
||||
#include "classes/ElementBufferObject.h"
|
||||
#include "classes/Shape.h"
|
||||
#include "classes/VertexArrayObject.h"
|
||||
#include "classes/VertexBufferObject.h"
|
||||
#include "glad/glad.h"
|
||||
@@ -16,7 +17,7 @@ void processInput(GLFWwindow *window);
|
||||
|
||||
// Constants.
|
||||
const unsigned int WINDOW_WIDTH = 800;
|
||||
const unsigned int WINDOW_HEIGHT = 600;
|
||||
const unsigned int WINDOW_HEIGHT = 800;
|
||||
|
||||
float vertices[] = {
|
||||
1.0f, 1.0f, 0.0f, // top right
|
||||
@@ -30,6 +31,42 @@ unsigned int indices[] = {
|
||||
1, 2, 3 // second Triangle
|
||||
};
|
||||
|
||||
float vert1[] = {
|
||||
0.0f, 1.0f, 0.0f,
|
||||
0.5f, -0.50f, 0.0f,
|
||||
-0.5f, -0.50f, 0.0f
|
||||
};
|
||||
|
||||
float vert2[] = {
|
||||
0.0f, -1.0f, 0.0f,
|
||||
0.5f, 0.50f, 0.0f,
|
||||
-0.5f, 0.50f, 0.0f
|
||||
};
|
||||
|
||||
float vert3[] = {
|
||||
0.0f, 1.0f, 0.0f,
|
||||
1.0f, 0.25f, 0.0f,
|
||||
1.0f, -0.25f, 0.0f,
|
||||
0.0f, -1.0f, 0.0f,
|
||||
-1.0f, -0.25f, 0.0f,
|
||||
-1.0f, 0.25f, 0.0f,
|
||||
0.0f, 0.0f, 0.0f,
|
||||
|
||||
};
|
||||
|
||||
unsigned int indi[] = {
|
||||
0, 1, 2
|
||||
};
|
||||
|
||||
unsigned int indi2[] = {
|
||||
0, 6, 1,
|
||||
1, 6, 2,
|
||||
2, 6, 3,
|
||||
3, 6, 4,
|
||||
4, 6, 5,
|
||||
5, 6, 0
|
||||
};
|
||||
|
||||
int main(void) {
|
||||
// Initialisation and configuration.
|
||||
glfwInit();
|
||||
@@ -54,34 +91,29 @@ int main(void) {
|
||||
}
|
||||
|
||||
// Shader stuff.
|
||||
Shader shader("../src/shaders/vertexShader.vert.glsl", "../src/shaders/fragmentShader.frag.glsl");
|
||||
Shader shader("../src/shaders/vertexShader.vert.glsl", "../src/shaders/frag_rgb_shader.frag.glsl");
|
||||
|
||||
VertexArrayObject VAO;
|
||||
VAO.Bind();
|
||||
VertexBufferObject VBO(vertices, sizeof(vertices));
|
||||
VBO.Bind();
|
||||
ElementBufferObject EBO(indices, sizeof(indices));
|
||||
EBO.Bind();
|
||||
|
||||
VAO.LinkVBO(VBO, 0);
|
||||
Shape shape1(vertices, sizeof(vertices), indices, sizeof(indices));
|
||||
// Shape shape2(vert2, sizeof(vert2), indi, sizeof(indi));
|
||||
|
||||
// while loop goes here.
|
||||
while (!glfwWindowShouldClose(window)) {
|
||||
processInput(window);
|
||||
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
|
||||
glClearColor(0.1f, 0.1f, 0.1f, 1.0f);
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
|
||||
shader.Activate();
|
||||
VAO.Bind();
|
||||
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
|
||||
|
||||
shape1.Render(shader);
|
||||
// shape2.Render(shader);
|
||||
|
||||
glfwSwapBuffers(window);
|
||||
glfwPollEvents();
|
||||
}
|
||||
|
||||
VAO.Delete();
|
||||
VBO.Delete();
|
||||
EBO.Delete();
|
||||
shape1.Delete();
|
||||
// shape2.Delete();
|
||||
|
||||
shader.Delete();
|
||||
glfwDestroyWindow(window);
|
||||
|
||||
|
16
src/shaders/frag_rgb_shader.frag.glsl
Normal file
16
src/shaders/frag_rgb_shader.frag.glsl
Normal file
@@ -0,0 +1,16 @@
|
||||
#version 330 core
|
||||
|
||||
out vec4 FragColour;
|
||||
|
||||
void main() {
|
||||
vec2 pixelPos = gl_FragCoord.xy;
|
||||
|
||||
float x = pixelPos.x / 800.0f;
|
||||
float y = pixelPos.y / 800.0f;
|
||||
|
||||
float r = 1 - x + y;
|
||||
float g = x + y;
|
||||
float b = 1.5 - y;
|
||||
|
||||
FragColour = vec4(r, g, b, 1.0f);
|
||||
}
|
Reference in New Issue
Block a user