draw commands

This commit is contained in:
Gregory Wells
2025-08-19 08:50:00 -04:00
parent 55605b6d5f
commit 50d8a669b3
3 changed files with 22 additions and 6 deletions

View File

@@ -20,8 +20,8 @@ gnCommandFunctions loadOpenGLCommandFunctions() {
._gnCommandBindUniform = NULL, ._gnCommandBindUniform = NULL,
._gnCommandPushConstant = NULL, ._gnCommandPushConstant = NULL,
._gnCommandBindBuffer = NULL, ._gnCommandBindBuffer = openglBindBuffer,
._gnCommandDraw = NULL, ._gnCommandDraw = openglDraw,
._gnCommandDrawIndexed = NULL, ._gnCommandDrawIndexed = openglDrawIndexed,
}; };
} }

View File

@@ -1,6 +1,7 @@
#pragma once #pragma once
#include "core/src/buffers/gryphn_buffer.h" #include "core/src/buffers/gryphn_buffer.h"
#include "glad/glad.h" #include "glad/glad.h"
#include "utils/gryphn_cpp_function.h"
typedef struct gnPlatformBuffer_t { typedef struct gnPlatformBuffer_t {
GLuint id; GLuint id;
@@ -13,3 +14,6 @@ void openglBufferSubData(gnBufferHandle buffer, size_t offset, size_t dataSize,
void* openglMapBuffer(gnBufferHandle buffer); void* openglMapBuffer(gnBufferHandle buffer);
void openglUnmapBuffer(gnBufferHandle buffer); void openglUnmapBuffer(gnBufferHandle buffer);
void openglDestroyBuffer(gnBufferHandle buffer); void openglDestroyBuffer(gnBufferHandle buffer);
GN_CPP_FUNCTION GLenum gnBufferTypeToGLEnum(gnBufferType type);

View File

@@ -27,8 +27,20 @@ GN_CPP_FUNCTION void openglEndRenderPass(gnCommandBuffer buffer) {
GN_CPP_FUNCTION void openglBindGraphicsPipeline(gnCommandBuffer buffer, gnGraphicsPipeline graphicsPipeline); GN_CPP_FUNCTION void openglBindGraphicsPipeline(gnCommandBuffer buffer, gnGraphicsPipeline graphicsPipeline);
GN_CPP_FUNCTION void openglSetViewport(gnCommandBuffer buffer, gnViewport viewport); GN_CPP_FUNCTION void openglSetViewport(gnCommandBuffer buffer, gnViewport viewport);
GN_CPP_FUNCTION void openglSetScissor(gnCommandBuffer buffer, gnScissor scissor); GN_CPP_FUNCTION void openglSetScissor(gnCommandBuffer buffer, gnScissor scissor);
GN_CPP_FUNCTION void openglBindBuffer(gnCommandBufferHandle buffer, gnBufferHandle bufferToBind, gnBufferType type); 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); openglCommandRunnerBindFunction(buffer->commandBuffer->commmandRunner, std::function<void()>([&]{
GN_CPP_FUNCTION void openglDrawIndexed(gnCommandBufferHandle buffer, gnIndexType type, int indexCount, int firstIndex, int vertexOffset, int instanceCount, int firstInstance); glBindBuffer(gnBufferTypeToGLEnum(type), bufferToBind->buffer->id);
}));
}
GN_CPP_FUNCTION void openglDraw(gnCommandBuffer buffer, int vertexCount, int firstVertex, int instanceCount, int firstInstance) {
openglCommandRunnerBindFunction(buffer->commandBuffer->commmandRunner, std::function<void()>([&]{
glDrawArraysInstancedBaseInstance(GL_TRIANGLES, firstVertex, vertexCount, instanceCount, firstInstance);
}));
}
GN_CPP_FUNCTION void openglDrawIndexed(gnCommandBufferHandle buffer, gnIndexType type, int indexCount, int firstIndex, int vertexOffset, int instanceCount, int firstInstance) {
openglCommandRunnerBindFunction(buffer->commandBuffer->commmandRunner, std::function<void()>([&]{
glDrawElementsInstancedBaseVertexBaseInstance(GL_TRIANGLES, indexCount, GL_UNSIGNED_INT, (void*)(sizeof(GLuint) * firstIndex), instanceCount, vertexOffset, firstInstance);
}));
}
GN_CPP_FUNCTION 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);
GN_CPP_FUNCTION void openglBindVertexBytes(gnCommandBufferHandle buffer, gnPushConstantLayout layout, void* data); GN_CPP_FUNCTION void openglBindVertexBytes(gnCommandBufferHandle buffer, gnPushConstantLayout layout, void* data);