aboutsummaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp29
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]()
{