draw commands
This commit is contained in:
@@ -20,8 +20,8 @@ gnCommandFunctions loadOpenGLCommandFunctions() {
|
||||
._gnCommandBindUniform = NULL,
|
||||
._gnCommandPushConstant = NULL,
|
||||
|
||||
._gnCommandBindBuffer = NULL,
|
||||
._gnCommandDraw = NULL,
|
||||
._gnCommandDrawIndexed = NULL,
|
||||
._gnCommandBindBuffer = openglBindBuffer,
|
||||
._gnCommandDraw = openglDraw,
|
||||
._gnCommandDrawIndexed = openglDrawIndexed,
|
||||
};
|
||||
}
|
||||
|
@@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
#include "core/src/buffers/gryphn_buffer.h"
|
||||
#include "glad/glad.h"
|
||||
#include "utils/gryphn_cpp_function.h"
|
||||
|
||||
typedef struct gnPlatformBuffer_t {
|
||||
GLuint id;
|
||||
@@ -13,3 +14,6 @@ void openglBufferSubData(gnBufferHandle buffer, size_t offset, size_t dataSize,
|
||||
void* openglMapBuffer(gnBufferHandle buffer);
|
||||
void openglUnmapBuffer(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 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 openglBindBuffer(gnCommandBufferHandle buffer, gnBufferHandle bufferToBind, gnBufferType type) {
|
||||
openglCommandRunnerBindFunction(buffer->commandBuffer->commmandRunner, std::function<void()>([&]{
|
||||
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 openglBindVertexBytes(gnCommandBufferHandle buffer, gnPushConstantLayout layout, void* data);
|
||||
|
Reference in New Issue
Block a user