Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "AppLayer.h"
- #include "Geometry.h"
- #include "Network.h"
- #include "Neuron.h"
- #include "Connection.h"
- #include <vector>
- using namespace GLCore;
- using namespace GLCore::Utils;
- using namespace Shiryu::Geometry;
- using namespace Shiryu::NeuralNetwork;
- AppLayer::AppLayer()
- {
- network = new Network(); // Initialize in the constructor
- }
- AppLayer::~AppLayer()
- {
- delete network;
- }
- void AppLayer::OnAttach()
- {
- EnableGLDebugging();
- // Init here
- network->AddNeuron(0, {-.3f, 0}, 0.05f, 1);
- network->AddNeuron(1, {.3f, 0}, 0.05f, 2);
- network->AddNeuronConnection(0, 1);
- }
- void AppLayer::OnDetach()
- {
- // Shutdown here
- }
- void AppLayer::OnEvent(Event& event)
- {
- // Events here
- }
- void AppLayer::OnUpdate(Timestep ts)
- {
- // Render here
- std::vector<Geometry*> gobjects;
- for (size_t i = 0; i < network->neurons.size(); i++)
- gobjects.push_back(Geometry::Circle(network->neurons[i]->position, network->neurons[i]->radius));
- for (size_t i = 0; i < network->connections.size(); i++)
- gobjects.push_back(Geometry::Line(network->Get(network->connections[i]->startNeuronId)->position, network->Get(network->connections[i]->endNeuronId)->position));
- for (Geometry* geometry : gobjects)
- {
- // Bind VAO and VBO (create them if needed)
- if (geometry->vao == 0) {
- glGenVertexArrays(1, &geometry->vao);
- glGenBuffers(1, &geometry->vbo);
- glBindVertexArray(geometry->vao);
- glBindBuffer(GL_ARRAY_BUFFER, geometry->vbo);
- glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(float), (void*)0);
- glEnableVertexAttribArray(0);
- }
- // Transfer VBO data if not already done
- if (!geometry->vboDataTransferred) {
- glBufferData(GL_ARRAY_BUFFER, geometry->vertices.size() * sizeof(float), geometry->vertices.data(), GL_STATIC_DRAW);
- geometry->vboDataTransferred = true;
- }
- // Bind shader and set uniforms
- //glUseProgram(shaderProgram); // Assuming you have a compiled shader program
- // ... (Set uniforms for position, color, etc., based on your shader)
- if (geometry->mode == GL_LINES)
- glLineWidth(geometry->lineWidth);
- // Draw the geometry
- glBindVertexArray(geometry->vao);
- glDrawArrays(geometry->mode, 0, geometry->numVertices);
- }
- // Cleanup gobjects (using smart pointers would be better)
- for (Geometry* geometry : gobjects) {
- delete geometry;
- }
- }
- void AppLayer::OnImGuiRender()
- {
- // ImGui here
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement