Fix compile time errors

This commit is contained in:
Linloir 2022-12-13 09:56:34 +08:00
parent 7ce0a4e27d
commit b5e5b4cfa9
No known key found for this signature in database
GPG Key ID: 58EEB209A0F2C366
6 changed files with 23 additions and 18 deletions

View File

@ -3,6 +3,7 @@
#include <vector> #include <vector>
#include "utils.h" #include "utils.h"
#include "logger.h"
class ElementBufferObject class ElementBufferObject
{ {

View File

@ -13,7 +13,7 @@ private:
std::vector<unsigned int> _indices; std::vector<unsigned int> _indices;
std::vector<Texture> _textures; std::vector<Texture> _textures;
VertexArrayObject _vao; VertexArrayObject _vao = VertexArrayObject::empty();
public: public:
Mesh(const std::vector<Vertex>& vertices, const std::vector<unsigned int>& indices, const std::vector<Texture>& textures); Mesh(const std::vector<Vertex>& vertices, const std::vector<unsigned int>& indices, const std::vector<Texture>& textures);

View File

@ -46,6 +46,19 @@ void SceneViewer::initializeGL() {
_vao.ensureInitialized(); _vao.ensureInitialized();
Logger::info("Vertex Array Object initialized"); Logger::info("Vertex Array Object initialized");
vector<Vertex> vertices = {
{ { -0.5f, -0.5f, 0.0f } },
{ { 0.5f, -0.5f, 0.0f } },
{ { 0.0f, 0.5f, 0.0f } }
};
VertexBufferObject vbo(vertices);
Logger::info("Vertex Buffer Object initialized");
_vao.bindVertexBufferObject(vbo);
_vao.setVertexAttributePointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), 0);
_vao.enableVertexAttribute(0);
Logger::info("Vertex Buffer Object bound to Vertex Array Object");
_shaderProgram.ensureInitialized(); _shaderProgram.ensureInitialized();
Logger::info("Shader Program initialized"); Logger::info("Shader Program initialized");
@ -53,7 +66,9 @@ void SceneViewer::initializeGL() {
VertexShader vertexShader("./temp/shaders/vertexshader.vs"); VertexShader vertexShader("./temp/shaders/vertexshader.vs");
FragmentShader fragmentShader("./temp/shaders/fragmentshader.fs"); FragmentShader fragmentShader("./temp/shaders/fragmentshader.fs");
_shaderProgram.attachShader(vertexShader); _shaderProgram.attachShader(vertexShader);
_shaderProgram.attachShader(fragmentShader);
vertexShader.dispose();
fragmentShader.dispose();
} }
void SceneViewer::resizeGL(int w, int h) { void SceneViewer::resizeGL(int w, int h) {
@ -63,20 +78,7 @@ void SceneViewer::resizeGL(int w, int h) {
void SceneViewer::paintGL() { void SceneViewer::paintGL() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
vector<Vertex> vertices = { _vao.bind();
{ { -0.5f, -0.5f, 0.0f } }, _shaderProgram.bind();
{ { 0.5f, -0.5f, 0.0f } },
{ { 0.0f, 0.5f, 0.0f } }
};
VertexBufferObject vbo(vertices);
VertexArrayObject vao(vbo);
vao.setVertexAttributePointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), 0);
vao.enableVertexAttribute(0);
VertexShader vertexShader("./temp/shaders/vertexshader.vs");
FragmentShader fragmentShader("./temp/shaders/fragmentshader.fs");
ShaderProgram shaderProgram(vertexShader, fragmentShader);
shaderProgram.bind();
vao.bind();
glDrawArrays(GL_TRIANGLES, 0, 3); glDrawArrays(GL_TRIANGLES, 0, 3);
} }

View File

@ -5,6 +5,7 @@
#include <GLM/glm.hpp> #include <GLM/glm.hpp>
#include "utils.h" #include "utils.h"
#include "logger.h"
class Shader { class Shader {
protected: protected:

View File

@ -20,7 +20,7 @@ VertexBufferObject::VertexBufferObject(const std::vector<Vertex>& vertices) {
} }
void VertexBufferObject::setBuffer(const std::vector<Vertex>& vertices) { void VertexBufferObject::setBuffer(const std::vector<Vertex>& vertices) {
if (id == 0) { if (_id == 0) {
Logger::error("Try to bind buffer to an uninitialized vertex buffer object"); Logger::error("Try to bind buffer to an uninitialized vertex buffer object");
return; return;
} }

View File

@ -4,6 +4,7 @@
#include "vertex.h" #include "vertex.h"
#include "utils.h" #include "utils.h"
#include "logger.h"
class VertexBufferObject { class VertexBufferObject {
public: public: