draw commands
This commit is contained in:
@@ -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,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
|
@@ -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);
|
||||||
|
Reference in New Issue
Block a user