Working on the Player UI
This commit is contained in:
@ -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) {
|
||||
|
@ -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);
|
||||
}
|
@ -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);
|
Reference in New Issue
Block a user