Added objects

This commit is contained in:
Robert 2021-01-22 01:29:50 +01:00
parent f86fcad89f
commit 107e207a83
5 changed files with 53 additions and 10 deletions

View file

@ -65,7 +65,7 @@ int main(int argc, char** argv)
};
// Make a square
oglu::VertexArray square = oglu::MakeVertexArray(vertices, sizeof(vertices), indices, sizeof(indices), topology, sizeof(topology));
oglu::Object square(vertices, sizeof(vertices), indices, sizeof(indices), topology, sizeof(topology));
// Create a shader
oglu::Shader shader;
@ -83,17 +83,12 @@ int main(int argc, char** argv)
oglu::Texture crate = oglu::MakeTexture("assets/crate.jpg");
oglu::Texture opengl = oglu::MakeTexture("assets/opengl.png");
oglu::Transformable model;
//model.SetRotation(-55.0f, 0.0f, 0.0f);
glm::mat4 view = glm::mat4(1.0f);
view = glm::translate(view, glm::vec3(0.0f, 0.0f, -3.0f));
glm::mat4 projection;
projection = glm::perspective(glm::radians(45.f), 1.0f, 0.1f, 100.0f);
glm::mat4 test = glm::make_mat4(model.GetMatrix());
// Window loop
while (!glfwWindowShouldClose(window))
{
@ -101,16 +96,16 @@ int main(int argc, char** argv)
oglu::ClearScreen(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT, oglu::Color(0.29f, 0.13f, 0.23f));
model.Rotate(6.0f, 0.0f, 0.0f);
square.Rotate(6.0f, 0.0f, 0.0f);
shader->Use();
shader->SetUniform("texture1", crate, 0);
shader->SetUniform("texture2", opengl, 1);
shader->SetUniformMatrix4fv("model", 1, GL_FALSE, model.GetMatrix());
shader->SetUniformMatrix4fv("model", 1, GL_FALSE, square.GetMatrix());
shader->SetUniformMatrix4fv("view", 1, GL_FALSE, glm::value_ptr(view));
shader->SetUniformMatrix4fv("projection", 1, GL_FALSE, glm::value_ptr(projection));
square->BindAndDraw();
square.Render();
glfwSwapBuffers(window);
glfwPollEvents();

24
include/object.hpp Normal file
View file

@ -0,0 +1,24 @@
#ifndef OBJECT_HPP
#define OBJECT_HPP
#include <core.hpp>
#include <transformable.hpp>
#include <vertexArray.hpp>
namespace oglu
{
class OGLU_API Object : public Transformable
{
public:
Object(const GLfloat* vertices, size_t verticesSize, const GLuint* indices, size_t indicesSize, const VertexAttribute* topology, size_t topologySize);
Object(const Object& other);
~Object();
void Render();
private:
VertexArray VAO;
};
}
#endif

View file

@ -12,6 +12,7 @@
#include <vertexArray.hpp>
#include <shader.hpp>
#include <texture.hpp>
#include <object.hpp>
namespace oglu
{

View file

@ -16,7 +16,7 @@ namespace oglu
/**
* @brief Structure to store topology data.
*/
OGLU_API struct VertexAttribute {
struct OGLU_API VertexAttribute {
/*@{*/
GLuint index; ///< Index of the vertex attribute
GLint size; ///< Number of elements in this attribute

23
src/object.cpp Normal file
View file

@ -0,0 +1,23 @@
#include "object.hpp"
namespace oglu
{
Object::Object(const GLfloat* vertices, size_t verticesSize, const GLuint* indices, size_t indicesSize, const VertexAttribute* topology, size_t topologySize) :
VAO(MakeVertexArray(vertices, verticesSize, indices, indicesSize, topology, topologySize))
{
}
Object::Object(const Object& other) :
VAO(other.VAO)
{
}
Object::~Object()
{
}
void Object::Render()
{
VAO->BindAndDraw();
}
}