72 lines
1.6 KiB
C++
72 lines
1.6 KiB
C++
|
|
#include <GL/glew.h>
|
|
#include <GLFW/glfw3.h>
|
|
|
|
#include <assimp/Importer.hpp>
|
|
|
|
#include "arrays.hpp"
|
|
#include "font.hpp"
|
|
|
|
using namespace sim::graphics;
|
|
|
|
static unsigned int vao, vbo, ebo;
|
|
|
|
static void* ptr_diff(void* a, void* b)
|
|
{
|
|
return (void*)((size_t)a - (size_t)b);
|
|
}
|
|
|
|
void processNode(aiNode *node, const aiScene *scene)
|
|
{
|
|
|
|
}
|
|
|
|
Mesh processMesh(aiMesh *mesh, const aiScene *scene)
|
|
{
|
|
|
|
}
|
|
|
|
unsigned int arrays::init()
|
|
{
|
|
vertex v;
|
|
unsigned long handle = font::chars['*'].handle;
|
|
|
|
Assimp::Importer importer;
|
|
const aiScene *scene = importer.ReadFile("monkey.obj", aiProcess_Triangulate | aiProcess_FlipUVs);
|
|
|
|
arrays::vertex vertices[4] = {
|
|
{handle, {0.0f, 1.0f}, {-0.5f, -0.5f, 0.0f}},
|
|
{handle, {0.0f, 0.0f}, {-0.5f, 0.5f, 0.0f}},
|
|
{handle, {1.0f, 1.0f}, { 0.5f, -0.5f, 0.0f}},
|
|
{handle, {1.0f, 0.0f}, { 0.5f, 0.5f, 0.0f}}
|
|
};
|
|
|
|
int indices[6] = {
|
|
0, 1, 3, 0, 2, 3
|
|
};
|
|
|
|
glGenVertexArrays(1, &vao);
|
|
glBindVertexArray(vao);
|
|
|
|
glGenBuffers(1, &vbo);
|
|
glGenBuffers(1, &ebo);
|
|
|
|
glBindBuffer(GL_ARRAY_BUFFER, vbo);
|
|
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
|
|
|
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo);
|
|
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
|
|
|
|
glVertexAttribLPointer(0, 1, GL_UNSIGNED_INT64_ARB, sizeof(v), ptr_diff(&v.texid, &v));
|
|
glEnableVertexAttribArray(0);
|
|
|
|
glVertexAttribPointer(1, 2, GL_FLOAT, false, sizeof(v), ptr_diff(&v.texpos, &v));
|
|
glEnableVertexAttribArray(1);
|
|
|
|
glVertexAttribPointer(2, 3, GL_FLOAT, false, sizeof(v), ptr_diff(&v.pos, &v));
|
|
glEnableVertexAttribArray(2);
|
|
|
|
return vao;
|
|
}
|
|
|