setup basic command runner
This commit is contained in:
@@ -26,9 +26,11 @@ void openglResetCommandBuffer(gnCommandBuffer commandBuffer) {
|
|||||||
// nothing, for now command buffers are implictly reset on begin
|
// nothing, for now command buffers are implictly reset on begin
|
||||||
}
|
}
|
||||||
gnReturnCode openglBeginCommandBuffer(gnCommandBuffer commandBuffer) {
|
gnReturnCode openglBeginCommandBuffer(gnCommandBuffer commandBuffer) {
|
||||||
|
commandBuffer->commandBuffer->commmandRunner = openglCreateCommandRunner();
|
||||||
return GN_SUCCESS;
|
return GN_SUCCESS;
|
||||||
}
|
}
|
||||||
gnReturnCode openglEndCommandBuffer(gnCommandBuffer commandBuffer) {
|
gnReturnCode openglEndCommandBuffer(gnCommandBuffer commandBuffer) {
|
||||||
|
openglDestroyCommandRunner(commandBuffer->commandBuffer->commmandRunner);
|
||||||
return GN_SUCCESS;
|
return GN_SUCCESS;
|
||||||
}
|
}
|
||||||
void openglDestroyCommandBuffer(gnCommandBuffer commandBuffer) {
|
void openglDestroyCommandBuffer(gnCommandBuffer commandBuffer) {
|
||||||
|
@@ -1,8 +1,10 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "core/src/command/command_buffer/gryphn_command_buffer.h"
|
#include "core/src/command/command_buffer/gryphn_command_buffer.h"
|
||||||
|
#include "commands/commands/opengl_command_runner.h"
|
||||||
|
|
||||||
typedef struct gnPlatformCommandBuffer_t {
|
typedef struct gnPlatformCommandBuffer_t {
|
||||||
int index;
|
int index;
|
||||||
|
openglCommandRunner commmandRunner;
|
||||||
} gnPlatformCommandBuffer;
|
} gnPlatformCommandBuffer;
|
||||||
gnReturnCode openglCommandPoolAllocateCommandBuffers(gnCommandBufferHandle* commandBuffers, uint32_t count, gnCommandPoolHandle pool);
|
gnReturnCode openglCommandPoolAllocateCommandBuffers(gnCommandBufferHandle* commandBuffers, uint32_t count, gnCommandPoolHandle pool);
|
||||||
|
|
||||||
|
@@ -0,0 +1,8 @@
|
|||||||
|
#include "opengl_command_runner.h"
|
||||||
|
|
||||||
|
typedef struct openglCommandRunner_t {
|
||||||
|
|
||||||
|
} glCommandRunner;
|
||||||
|
|
||||||
|
GN_CPP_FUNCTION openglCommandRunner openglCreateCommandRunner() { return new glCommandRunner(); }
|
||||||
|
GN_CPP_FUNCTION void openglDestroyCommandRunner(openglCommandRunner runner) { delete runner; }
|
@@ -0,0 +1,6 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "utils/gryphn_cpp_function.h"
|
||||||
|
typedef struct openglCommandRunner_t* openglCommandRunner;
|
||||||
|
|
||||||
|
GN_CPP_FUNCTION openglCommandRunner openglCreateCommandRunner();
|
||||||
|
GN_CPP_FUNCTION void openglDestroyCommandRunner(openglCommandRunner runner);
|
@@ -1,22 +0,0 @@
|
|||||||
#include "glad/glad.h"
|
|
||||||
#include "opengl_commands.h"
|
|
||||||
#include "framebuffer/opengl_framebuffer.h"
|
|
||||||
|
|
||||||
void openglBeginRenderPass(gnCommandBuffer buffer, gnRenderPassInfo passInfo) {
|
|
||||||
glBindFramebuffer(GL_FRAMEBUFFER, passInfo.framebuffer->framebuffer->framebuffers[0]);
|
|
||||||
glClearColor(passInfo.clearValues[0].r, passInfo.clearValues[0].g, passInfo.clearValues[0].b, passInfo.clearValues[0].a);
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
|
||||||
glEnable(GL_DEPTH_TEST);
|
|
||||||
glViewport(passInfo.offset.x, passInfo.offset.y, passInfo.size.x, passInfo.size.y);
|
|
||||||
}
|
|
||||||
void openglEndRenderPass(gnCommandBuffer buffer) {
|
|
||||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
|
||||||
}
|
|
||||||
void openglBindGraphicsPipeline(gnCommandBuffer buffer, gnGraphicsPipeline graphicsPipeline);
|
|
||||||
void openglSetViewport(gnCommandBuffer buffer, gnViewport viewport);
|
|
||||||
void openglSetScissor(gnCommandBuffer buffer, gnScissor scissor);
|
|
||||||
void openglBindBuffer(gnCommandBufferHandle buffer, gnBufferHandle bufferToBind, gnBufferType type);
|
|
||||||
void openglDraw(gnCommandBuffer buffer, int vertexCount, int firstVertex, int instanceCount, int firstInstance);
|
|
||||||
void openglDrawIndexed(gnCommandBufferHandle buffer, gnIndexType type, int indexCount, int firstIndex, int vertexOffset, int instanceCount, int firstInstance);
|
|
||||||
void openglBindUniform(gnCommandBufferHandle buffer, gnUniform uniform, uint32_t set, uint32_t dynamicOffsetCount, uint32_t* dynamicOffsets);
|
|
||||||
void openglBindVertexBytes(gnCommandBufferHandle buffer, gnPushConstantLayout layout, void* data);
|
|
@@ -0,0 +1,22 @@
|
|||||||
|
#include "glad/glad.h"
|
||||||
|
#include "opengl_commands.h"
|
||||||
|
// #include "framebuffer/opengl_framebuffer.h"
|
||||||
|
|
||||||
|
GN_CPP_FUNCTION void openglBeginRenderPass(gnCommandBuffer buffer, gnRenderPassInfo passInfo) {
|
||||||
|
// glBindFramebuffer(GL_FRAMEBUFFER, passInfo.framebuffer->framebuffer->framebuffers[0]);
|
||||||
|
// glClearColor(passInfo.clearValues[0].r, passInfo.clearValues[0].g, passInfo.clearValues[0].b, passInfo.clearValues[0].a);
|
||||||
|
// glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
// glEnable(GL_DEPTH_TEST);
|
||||||
|
// glViewport(passInfo.offset.x, passInfo.offset.y, passInfo.size.x, passInfo.size.y);
|
||||||
|
}
|
||||||
|
GN_CPP_FUNCTION void openglEndRenderPass(gnCommandBuffer buffer) {
|
||||||
|
// glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||||
|
}
|
||||||
|
GN_CPP_FUNCTION void openglBindGraphicsPipeline(gnCommandBuffer buffer, gnGraphicsPipeline graphicsPipeline);
|
||||||
|
GN_CPP_FUNCTION void openglSetViewport(gnCommandBuffer buffer, gnViewport viewport);
|
||||||
|
GN_CPP_FUNCTION void openglSetScissor(gnCommandBuffer buffer, gnScissor scissor);
|
||||||
|
GN_CPP_FUNCTION void openglBindBuffer(gnCommandBufferHandle buffer, gnBufferHandle bufferToBind, gnBufferType type);
|
||||||
|
GN_CPP_FUNCTION void openglDraw(gnCommandBuffer buffer, int vertexCount, int firstVertex, int instanceCount, int firstInstance);
|
||||||
|
GN_CPP_FUNCTION void openglDrawIndexed(gnCommandBufferHandle buffer, gnIndexType type, int indexCount, int firstIndex, int vertexOffset, int instanceCount, int firstInstance);
|
||||||
|
GN_CPP_FUNCTION void openglBindUniform(gnCommandBufferHandle buffer, gnUniform uniform, uint32_t set, uint32_t dynamicOffsetCount, uint32_t* dynamicOffsets);
|
||||||
|
GN_CPP_FUNCTION void openglBindVertexBytes(gnCommandBufferHandle buffer, gnPushConstantLayout layout, void* data);
|
@@ -1,13 +1,14 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "core/src/command/commands/gryphn_command.h"
|
#include "core/src/command/commands/gryphn_command.h"
|
||||||
|
#include "utils/gryphn_cpp_function.h"
|
||||||
|
|
||||||
void openglBeginRenderPass(gnCommandBuffer buffer, gnRenderPassInfo passInfo);
|
GN_CPP_FUNCTION void openglBeginRenderPass(gnCommandBuffer buffer, gnRenderPassInfo passInfo);
|
||||||
void openglEndRenderPass(gnCommandBuffer buffer);
|
GN_CPP_FUNCTION void openglEndRenderPass(gnCommandBuffer buffer);
|
||||||
void openglBindGraphicsPipeline(gnCommandBuffer buffer, gnGraphicsPipeline graphicsPipeline);
|
GN_CPP_FUNCTION void openglBindGraphicsPipeline(gnCommandBuffer buffer, gnGraphicsPipeline graphicsPipeline);
|
||||||
void openglSetViewport(gnCommandBuffer buffer, gnViewport viewport);
|
GN_CPP_FUNCTION void openglSetViewport(gnCommandBuffer buffer, gnViewport viewport);
|
||||||
void openglSetScissor(gnCommandBuffer buffer, gnScissor scissor);
|
GN_CPP_FUNCTION void openglSetScissor(gnCommandBuffer buffer, gnScissor scissor);
|
||||||
void openglBindBuffer(gnCommandBufferHandle buffer, gnBufferHandle bufferToBind, gnBufferType type);
|
GN_CPP_FUNCTION void openglBindBuffer(gnCommandBufferHandle buffer, gnBufferHandle bufferToBind, gnBufferType type);
|
||||||
void openglDraw(gnCommandBuffer buffer, int vertexCount, int firstVertex, int instanceCount, int firstInstance);
|
GN_CPP_FUNCTION void openglDraw(gnCommandBuffer buffer, int vertexCount, int firstVertex, int instanceCount, int firstInstance);
|
||||||
void openglDrawIndexed(gnCommandBufferHandle buffer, gnIndexType type, int indexCount, int firstIndex, int vertexOffset, int instanceCount, int firstInstance);
|
GN_CPP_FUNCTION void openglDrawIndexed(gnCommandBufferHandle buffer, gnIndexType type, int indexCount, int firstIndex, int vertexOffset, int instanceCount, int firstInstance);
|
||||||
void openglBindUniform(gnCommandBufferHandle buffer, gnUniform uniform, uint32_t set, uint32_t dynamicOffsetCount, uint32_t* dynamicOffsets);
|
GN_CPP_FUNCTION void openglBindUniform(gnCommandBufferHandle buffer, gnUniform uniform, uint32_t set, uint32_t dynamicOffsetCount, uint32_t* dynamicOffsets);
|
||||||
void openglBindVertexBytes(gnCommandBufferHandle buffer, gnPushConstantLayout layout, void* data);
|
GN_CPP_FUNCTION void openglBindVertexBytes(gnCommandBufferHandle buffer, gnPushConstantLayout layout, void* data);
|
||||||
|
@@ -4,9 +4,8 @@
|
|||||||
gnReturnCode openglCreateGraphicsPipeline(gnGraphicsPipeline graphicsPipeline, gnOutputDevice device, gnGraphicsPipelineInfo info) {
|
gnReturnCode openglCreateGraphicsPipeline(gnGraphicsPipeline graphicsPipeline, gnOutputDevice device, gnGraphicsPipelineInfo info) {
|
||||||
graphicsPipeline->graphicsPipeline = malloc(sizeof(gnPlatformGraphicsPipeline));
|
graphicsPipeline->graphicsPipeline = malloc(sizeof(gnPlatformGraphicsPipeline));
|
||||||
graphicsPipeline->graphicsPipeline->program = glCreateProgram();
|
graphicsPipeline->graphicsPipeline->program = glCreateProgram();
|
||||||
for (int i = 0; i < info.shaderModuleCount; i++) {
|
for (int i = 0; i < info.shaderModuleCount; i++)
|
||||||
glAttachShader(graphicsPipeline->graphicsPipeline->program, info.shaderModules[i]->shaderModule->id);
|
glAttachShader(graphicsPipeline->graphicsPipeline->program, info.shaderModules[i]->shaderModule->id);
|
||||||
}
|
|
||||||
glLinkProgram(graphicsPipeline->graphicsPipeline->program);
|
glLinkProgram(graphicsPipeline->graphicsPipeline->program);
|
||||||
return GN_SUCCESS;
|
return GN_SUCCESS;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user