render pass in OpenGL
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
#include "opengl_loader.h"
|
#include "opengl_loader.h"
|
||||||
#include "commands/buffers/opengl_command_buffer.h"
|
#include "commands/buffers/opengl_command_buffer.h"
|
||||||
|
#include "commands/commands/opengl_commands.h"
|
||||||
|
|
||||||
gnCommandFunctions loadOpenGLCommandFunctions() {
|
gnCommandFunctions loadOpenGLCommandFunctions() {
|
||||||
return (gnCommandFunctions) {
|
return (gnCommandFunctions) {
|
||||||
@@ -10,8 +11,8 @@ gnCommandFunctions loadOpenGLCommandFunctions() {
|
|||||||
._gnEndCommandBuffer = openglEndCommandBuffer,
|
._gnEndCommandBuffer = openglEndCommandBuffer,
|
||||||
._gnDestroyCommandBuffer = openglDestroyCommandBuffer,
|
._gnDestroyCommandBuffer = openglDestroyCommandBuffer,
|
||||||
|
|
||||||
._gnCommandBeginRenderPass = NULL,
|
._gnCommandBeginRenderPass = openglBeginRenderPass,
|
||||||
._gnCommandEndRenderPass = NULL,
|
._gnCommandEndRenderPass = openglEndRenderPass,
|
||||||
|
|
||||||
._gnCommandBindGraphicsPipeline = NULL,
|
._gnCommandBindGraphicsPipeline = NULL,
|
||||||
._gnCommandSetViewport = NULL,
|
._gnCommandSetViewport = NULL,
|
||||||
|
22
projects/apis/opengl/src/commands/commands/opengl_commands.c
Normal file
22
projects/apis/opengl/src/commands/commands/opengl_commands.c
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
#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);
|
13
projects/apis/opengl/src/commands/commands/opengl_commands.h
Normal file
13
projects/apis/opengl/src/commands/commands/opengl_commands.h
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "core/src/command/commands/gryphn_command.h"
|
||||||
|
|
||||||
|
void openglBeginRenderPass(gnCommandBuffer buffer, gnRenderPassInfo passInfo);
|
||||||
|
void openglEndRenderPass(gnCommandBuffer buffer);
|
||||||
|
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);
|
Reference in New Issue
Block a user