diff options
Diffstat (limited to 'src/main.cpp')
-rw-r--r-- | src/main.cpp | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/src/main.cpp b/src/main.cpp index b1a0d62..0e72df0 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,11 +1,16 @@ #include <cstdio> -#include <GL/glew.h> -#include <GLFW/glfw3.h> -#include <glm/glm.hpp> +#include "../include/RenderBackend/OpenGL/opengl.hpp" #include "../include/RenderBackend/OpenGL/VertexShader.hpp" #include "../include/RenderBackend/OpenGL/PixelShader.hpp" #include "../include/RenderBackend/OpenGL/ShaderProgram.hpp" #include "../include/RenderBackend/OpenGL/DeviceMemory.hpp" +#include "../include/RenderBackend/OpenGL/DeviceFrame.hpp" + +// TODO: Disallow shader variables that begin with "gl_" as reserved variables +// start with that. What about hlsl? + +// TODO: Creating buffers etc should be somehow created/drawn using the window object, since they are associated with the window +// opengl context using namespace amalgine; using namespace std; @@ -14,7 +19,7 @@ void initGlfw(); void initGlew(); GLFWwindow *createWindow(); -CompiledVertexShader* createVertexShader(); +CompiledVertexShader* createVertexShader(const DeviceMemory &inputData); CompiledPixelShader* createPixelShader(); int main() @@ -22,22 +27,24 @@ int main() initGlfw(); GLFWwindow *window = createWindow(); + DeviceFrame frame; + f32 verticesRaw[] = { 0.0f, 0.5f, 0.5f, -0.5f, -0.5f, -0.5f }; + DeviceMemory *triangle = frame.alloc(); DataView<f32> vertices(verticesRaw, 6); - DeviceMemory triangle; - triangle.copyAsStatic(vertices); + triangle->copy(vertices, DeviceMemory::StorageType::STATIC); - CompiledVertexShader *vertexShader = createVertexShader(); + CompiledVertexShader *vertexShader = createVertexShader(*triangle); CompiledPixelShader *pixelShader = createPixelShader(); ShaderProgram shaderProgram; - shaderProgram.addVertexShader(vertexShader); - shaderProgram.addPixelShader(pixelShader); + shaderProgram.setVertexShader(vertexShader); + shaderProgram.setPixelShader(pixelShader); Result<bool> shaderBuildResult = shaderProgram.build(); if(!shaderBuildResult) { @@ -52,6 +59,7 @@ int main() glfwSetWindowShouldClose(window, GL_TRUE); shaderProgram.use(); + frame.draw(); glfwSwapBuffers(window); } @@ -102,10 +110,11 @@ GLFWwindow* createWindow() return window; } -CompiledVertexShader* createVertexShader() +CompiledVertexShader* createVertexShader(const DeviceMemory &inputData) { VertexShader vertexShader; ShaderInputVec2 inputPosition = vertexShader.defineInputVec2("position"); + inputPosition.setData(inputData); vertexShader.defineMain([&inputPosition]() { |