43 lines
1.0 KiB
C
43 lines
1.0 KiB
C
/**
|
|
* Copyright (c) 2021 Dominic Masters
|
|
*
|
|
* This software is released under the MIT License.
|
|
* https://opensource.org/licenses/MIT
|
|
*/
|
|
|
|
#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;
|
|
|
|
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) {
|
|
int32_t i;
|
|
renderpass_t *renderPass;
|
|
renderitem_t *item;
|
|
|
|
renderPass = (renderpass_t *)dynArrayGet(&list->passes, pass);
|
|
|
|
// Bind the shader.
|
|
frameBufferUse(&renderPass->framebuffer, true);
|
|
shaderUse(renderPass->shader);
|
|
|
|
// "Uniforms"
|
|
|
|
// Render list
|
|
for(i = 0; i < itemCount; i++) {
|
|
item = (renderitem_t *)dynArrayGet(items, i);
|
|
item(list, renderPass, game, i);
|
|
}
|
|
} |