Working on the Player UI

This commit is contained in:
2021-09-06 09:12:45 -07:00
parent ae16d5438b
commit 09b3bdb93c
22 changed files with 262 additions and 53 deletions

View File

@ -19,7 +19,7 @@ void renderInit() {
glDepthMask(GL_TRUE);
glDepthFunc(GL_LEQUAL);
glClearColor(0,0,0, 1.0);
glClearColor(0,0,0, 0.0);
}
void renderFrameStart(render_t *render) {

View File

@ -8,36 +8,76 @@
#include "renderlist.h"
void renderListInit(renderlist_t *list, int32_t passes, int32_t width, int32_t height) {
int32_t i;
renderpass_t *pass;
list->width = width;
list->height = height;
frameBufferInit(&list->frame, width, height);
quadInit(&list->quad, 0, 0,0,0,0, 1,1,1,1);
dynArrayInit(&list->passes, sizeof(renderpass_t), passes);
for(i = 0; i < passes; i++) {
pass = (renderpass_t *)dynArrayGet(&list->passes, i);
frameBufferInit(&pass->framebuffer, width, height);
}
}
void renderListRenderPass(renderlist_t *list, game_t *game, int32_t pass, dynarray_t *items, int32_t itemCount) {
renderpass_t * renderListGetPass(renderlist_t *list, int32_t pass) {
return (renderpass_t *)dynArrayGet(&list->passes, pass);
}
int32_t renderPassAdd(renderlist_t *list) {
int32_t i = dynArrayAdd(&list->passes);
renderpass_t *pass = renderListGetPass(list, i);
frameBufferInit(&pass->frame,
list->frame.texture.width, list->frame.texture.height
);
return i;
}
void renderListRenderPass(
renderlist_t *list, engine_t *engine,
camera_t *camera, int32_t pass, dynarray_t *items
) {
int32_t i;
renderpass_t *renderPass;
renderitem_t *item;
renderPass = (renderpass_t *)dynArrayGet(&list->passes, pass);
renderPass = renderListGetPass(list, pass);
// Bind the shader.
frameBufferUse(&renderPass->framebuffer, true);
frameBufferUse(&renderPass->frame, true);
shaderUse(renderPass->shader);
// "Uniforms"
shaderUseCamera(renderPass->shader, camera);
// Render list
for(i = 0; i < itemCount; i++) {
for(i = 0; i < items->length; i++) {
item = (renderitem_t *)dynArrayGet(items, i);
item(list, renderPass, game, i);
item->onRender(list, renderPass, engine, i);
}
frameBufferUnbind(&engine->render, false);
}
void renderListRender(renderlist_t *list, engine_t *engine, shader_t *shader) {
camera_t camera;
int32_t i;
renderpass_t *pass;
// Setup the camera
cameraLookAt(&camera, 0,0,1, 0,0,0);
cameraOrtho(&camera, 0,1, 0,1, 0.5f, 1.5f);
// Bind the framebuffer
frameBufferUse(&list->frame, false);
// Set the shader
shaderUse(shader);
shaderUsePosition(shader, 0,0,0, 0,0,0);
shaderUseCamera(shader, &camera);
// Render each pass.
for(i = 0; i < list->passes.length; i++) {
pass = renderListGetPass(list, i);
shaderUseTexture(shader, &pass->frame.texture);
primitiveDraw(&list->quad, 0, -1);
}
// Unbind the framebuffer.
frameBufferUnbind(&engine->render, false);
}

View File

@ -7,10 +7,20 @@
#pragma once
#include <dawn/dawn.h>
#include "../game/game.h"
#include "framebuffer.h"
#include "primitive.h"
#include "shader.h"
#include "camera.h"
#include "primitives/quad.h"
#include "../util/dynarray.h"
void renderListInit(renderlist_t *renderList, int32_t passes);
void renderListInit(renderlist_t *list, int32_t passes, int32_t width, int32_t height);
renderpass_t * renderListGetPass(renderlist_t *list, int32_t pass);
int32_t renderPassAdd(renderlist_t *list);
void renderListRenderPass(
renderlist_t *list, engine_t *engine,
camera_t *camera, int32_t pass, dynarray_t *items
);
void renderListRender(renderlist_t *list, engine_t *engine, shader_t *shader);