adding models

This commit is contained in:
Jay Robson 2024-01-21 12:58:37 +11:00
parent 480852ff76
commit 9fededbe1a
4 changed files with 48 additions and 3 deletions

View File

@ -2,6 +2,8 @@
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <assimp/Importer.hpp>
#include "arrays.hpp"
#include "font.hpp"
@ -14,11 +16,24 @@ 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}},

View File

@ -38,15 +38,22 @@ in vec2 texPos;
out vec4 FragColour;
uniform bool do_tex;
uniform mat4 tex_mat;
void main()
{
FragColour = vec4(1) * texture2D(tex, texPos);
vec4 texdata = do_tex ? texture2D(tex, texPos) : vec4(1);
FragColour = tex_mat * texdata;
}
)";
static unsigned int prog_id;
int shader::gl_tex_mat;
int shader::gl_do_tex;
static int load_shader(const char** src, int type)
{
int id = glCreateShader(type);
@ -78,6 +85,9 @@ unsigned int shader::init_program()
return 0;
}
gl_tex_mat = glGetUniformLocation(prog_id, "tex_mat");
gl_do_tex = glGetUniformLocation(prog_id, "do_tex");
glUseProgram(prog_id);
glDeleteShader(vsh_id);
glDeleteShader(fsh_id);

View File

@ -4,6 +4,9 @@
namespace sim::graphics::shader
{
extern int gl_tex_mat;
extern int gl_do_tex;
unsigned int init_program();
};

View File

@ -2,6 +2,8 @@
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <glm/matrix.hpp>
#include <iostream>
#include "arrays.hpp"
@ -27,7 +29,7 @@ void window::create()
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 6);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
// glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, true);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, true);
glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, true);
win = glfwCreateWindow(800, 600, "FastNuclearSim", nullptr, nullptr);
@ -45,6 +47,10 @@ void window::create()
glEnable(GL_DEBUG_OUTPUT);
glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS);
glEnable(GL_DEPTH_TEST);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDebugMessageCallback(cb_debug_message, nullptr);
keyboard::init();
@ -59,8 +65,19 @@ void window::create()
void window::loop()
{
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClearColor(0.2f, 0.3f, 0.5f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glm::mat4 m = {
1, 1, 1, 1,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
};
glUniformMatrix4fv(shader::gl_tex_mat, 1, false, &m[0][0]);
glUniform1i(shader::gl_do_tex, 1);
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
glfwSwapBuffers(win);