starting to abstract the vertext buffers
This commit is contained in:
parent
baa209ceea
commit
9bdc13e3fc
3 changed files with 41 additions and 16 deletions
|
@ -57,7 +57,7 @@ struct matrix_ : matrixbase_<T, matrix_<R, C, T>>
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
explicit matrix_(std::initializer_list<T> args)
|
matrix_(std::initializer_list<T> args)
|
||||||
{
|
{
|
||||||
typename std::initializer_list<T>::iterator it = args.begin();
|
typename std::initializer_list<T>::iterator it = args.begin();
|
||||||
for (;it != args.end();it++) data[it-args.begin()] = *it;
|
for (;it != args.end();it++) data[it-args.begin()] = *it;
|
||||||
|
|
|
@ -59,11 +59,10 @@ void script::state::load_all() {
|
||||||
|
|
||||||
// open all libraries
|
// open all libraries
|
||||||
_state.open_libraries();
|
_state.open_libraries();
|
||||||
|
|
||||||
//
|
//
|
||||||
for (auto m : runtime_lua::get().register_functions()) {
|
for (auto m : runtime_lua::get().register_functions()) {
|
||||||
m.second(_state,_namespace);
|
m.second(_state,_namespace);
|
||||||
debug::d() << "loading module " << m.first;
|
// debug::d() << "loading module " << m.first;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
|
|
||||||
#include "pw/core/size.hpp"
|
#include "pw/core/size.hpp"
|
||||||
#include "pw/core/matrix.hpp"
|
#include "pw/core/matrix.hpp"
|
||||||
|
#include "pw/core/mesh.hpp"
|
||||||
|
|
||||||
|
|
||||||
#include "pw/core/debug.hpp"
|
#include "pw/core/debug.hpp"
|
||||||
#include "pw/visual/pipeline.hpp"
|
#include "pw/visual/pipeline.hpp"
|
||||||
|
@ -19,30 +21,54 @@ struct triangle_renderer
|
||||||
GLuint shader_programme = 0;
|
GLuint shader_programme = 0;
|
||||||
|
|
||||||
shader shader_p;
|
shader shader_p;
|
||||||
|
mesh amesh;
|
||||||
|
|
||||||
triangle_renderer()
|
triangle_renderer()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
float points[] = {
|
// float points[] = {
|
||||||
0.0f, 0.5f, 0.0f,
|
// 0.0f, 0.5f, 0.0f,
|
||||||
0.5f, -0.5f, 0.0f,
|
// 0.5f, -0.5f, 0.0f,
|
||||||
-0.5f, -0.5f, 0.0f
|
// -0.5f, -0.5f, 0.0f
|
||||||
|
// };
|
||||||
|
|
||||||
|
|
||||||
|
mesh::vertex3array_t vertices = {
|
||||||
|
{0.0f, 0.5f, 0.0f}
|
||||||
|
,{0.5f, -0.5f, 0.0f}
|
||||||
|
,{-0.5f, -0.5f, 0.0f}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
mesh::indexarray_t indices = { 0, 1, 2};
|
||||||
|
|
||||||
|
amesh.set_indices(indices);
|
||||||
|
amesh.set_vertices(vertices);
|
||||||
|
|
||||||
|
size_t vertex_size_bytes = amesh.vertices().size() * sizeof(mesh::vertex3array_t::value_type);
|
||||||
|
size_t vertex_stride = amesh.vertices().front().size();
|
||||||
|
|
||||||
|
|
||||||
|
debug::d() << 9 * sizeof(mesh::vertex3array_t::value_type::value_type) << " "
|
||||||
|
<< vertex_size_bytes;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// sizeof(mesh::vertex3array_t::value_type)
|
||||||
|
// 9 * sizeof(mesh::vertex3array_t::value_type::value_type)
|
||||||
|
|
||||||
glGenBuffers(1, &vbo);
|
glGenBuffers(1, &vbo);
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, vbo);
|
glBindBuffer(GL_ARRAY_BUFFER, vbo);
|
||||||
glBufferData(GL_ARRAY_BUFFER, 9 * sizeof(float), points, GL_STATIC_DRAW);
|
glBufferData(GL_ARRAY_BUFFER, vertex_size_bytes , amesh.vertices().data(), GL_STATIC_DRAW);
|
||||||
|
|
||||||
glGenVertexArrays(1, &vao);
|
glGenVertexArrays(1, &vao);
|
||||||
glBindVertexArray(vao);
|
glBindVertexArray(vao);
|
||||||
glEnableVertexAttribArray(0);
|
glEnableVertexAttribArray(0);
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, vbo);
|
glBindBuffer(GL_ARRAY_BUFFER, vbo);
|
||||||
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, nullptr);
|
glVertexAttribPointer(0, vertex_stride, GL_FLOAT, GL_FALSE, 0, nullptr);
|
||||||
|
|
||||||
const char* vertex_shader =
|
const char* vertex_shader =
|
||||||
"#version 400\n"
|
"#version 400\n"
|
||||||
|
@ -52,12 +78,12 @@ struct triangle_renderer
|
||||||
"}";
|
"}";
|
||||||
|
|
||||||
|
|
||||||
const char* fragment_shader =
|
const char *fragment_shader = R"(#version 400
|
||||||
"#version 400\n"
|
out vec4 frag_colour;
|
||||||
"out vec4 frag_colour;"
|
void main() {
|
||||||
"void main() {"
|
frag_colour = vec4(0.5, 0.5, 0.5, 1.0);
|
||||||
" frag_colour = vec4(0.1, 0.0, 0.5, 1.0);"
|
})";
|
||||||
"}";
|
|
||||||
#if 0
|
#if 0
|
||||||
GLuint vs = glCreateShader(GL_VERTEX_SHADER);
|
GLuint vs = glCreateShader(GL_VERTEX_SHADER);
|
||||||
glShaderSource(vs, 1, &vertex_shader, NULL);
|
glShaderSource(vs, 1, &vertex_shader, NULL);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue