diff --git a/Dengine.vcxproj.filters b/Dengine.vcxproj.filters index 812b986..6ba3d69 100644 --- a/Dengine.vcxproj.filters +++ b/Dengine.vcxproj.filters @@ -49,8 +49,8 @@ - + diff --git a/data/blackboard.art b/data/blackboard.art index 20132b3..e2272cf 100644 Binary files a/data/blackboard.art and b/data/blackboard.art differ diff --git a/src/AssetManager.c b/src/AssetManager.c index 54ee490..c2c567e 100644 --- a/src/AssetManager.c +++ b/src/AssetManager.c @@ -63,8 +63,8 @@ const i32 asset_loadTextureImage(AssetManager *assetManager, return -1; } - Texture tex = genTexture(CAST(GLuint)(imgWidth), CAST(GLuint)(imgHeight), - CAST(GLint)(bytesPerPixel), image); + Texture tex = texture_gen(CAST(GLuint)(imgWidth), CAST(GLuint)(imgHeight), + CAST(GLint)(bytesPerPixel), image); glCheckError(); stbi_image_free(image); @@ -111,6 +111,30 @@ INTERNAL GLuint createShaderFromPath(const char *const path, GLuint shadertype) return result; } +INTERNAL i32 shaderLoadProgram(Shader *const shader, const GLuint vertexShader, + const GLuint fragmentShader) +{ + shader->id = glCreateProgram(); + glAttachShader(shader->id, vertexShader); + glAttachShader(shader->id, fragmentShader); + glLinkProgram(shader->id); + + glDeleteShader(fragmentShader); + glDeleteShader(vertexShader); + + GLint success; + GLchar infoLog[512]; + glGetProgramiv(shader->id, GL_LINK_STATUS, &success); + if (!success) + { + glGetProgramInfoLog(shader->id, 512, NULL, infoLog); + printf("glLinkProgram failed: %s\n", infoLog); + return -1; + } + + return 0; +} + const i32 asset_loadShaderFiles(AssetManager *assetManager, const char *const vertexPath, const char *const fragmentPath, @@ -121,7 +145,7 @@ const i32 asset_loadShaderFiles(AssetManager *assetManager, createShaderFromPath(fragmentPath, GL_FRAGMENT_SHADER); Shader shader; - i32 result = shader_loadProgram(&shader, vertexShader, fragmentShader); + i32 result = shaderLoadProgram(&shader, vertexShader, fragmentShader); if (result) return result; @@ -295,13 +319,13 @@ const i32 asset_loadTTFont(AssetManager *assetManager, const char *filePath) V2(CAST(f32)(glyphIndex * font->maxSize.w), CAST(f32) row); #if 1 fontAtlas->texRect[atlasIndex++] = - getRect(origin, V2(CAST(f32) font->maxSize.w, - CAST(f32) font->maxSize.h)); + math_getRect(origin, V2(CAST(f32) font->maxSize.w, + CAST(f32) font->maxSize.h)); #else v2i fontSize = font->charMetrics[activeGlyph.codepoint - 32].trueSize; - fontAtlas->texRect[atlasIndex++] = - getRect(origin, V2(CAST(f32)fontSize.x, CAST(f32)fontSize.y)); + fontAtlas->texRect[atlasIndex++] = math_getRect( + origin, V2(CAST(f32) fontSize.x, CAST(f32) fontSize.y)); #endif } @@ -348,8 +372,8 @@ const i32 asset_loadTTFont(AssetManager *assetManager, const char *filePath) } } - Texture tex = genTexture(MAX_TEXTURE_SIZE, MAX_TEXTURE_SIZE, 4, - CAST(u8 *)fontBitmap); + Texture tex = texture_gen(MAX_TEXTURE_SIZE, MAX_TEXTURE_SIZE, 4, + CAST(u8 *) fontBitmap); assetManager->textures[texlist_font] = tex; #ifdef WT_RENDER_FONT_FILE diff --git a/src/Renderer.c b/src/Renderer.c index 4888a9f..009b82f 100644 --- a/src/Renderer.c +++ b/src/Renderer.c @@ -18,6 +18,125 @@ INTERNAL void updateBufferObject(Renderer *const renderer, glBindBuffer(GL_ARRAY_BUFFER, 0); } +INTERNAL RenderQuad createTexQuad(Renderer *renderer, v4 quadRect, v4 texRect, + Texture *tex) +{ + // NOTE(doyle): Draws a series of triangles (three-sided polygons) using + // vertices v0, v1, v2, then v2, v1, v3 (note the order) + RenderQuad result = {0}; + + /* Convert screen coordinates to normalised device coordinates */ + v4 quadRectNdc = quadRect; + quadRectNdc.e[0] *= renderer->vertexNdcFactor.w; + quadRectNdc.e[1] *= renderer->vertexNdcFactor.h; + quadRectNdc.e[2] *= renderer->vertexNdcFactor.w; + quadRectNdc.e[3] *= renderer->vertexNdcFactor.h; + + /* Convert texture coordinates to normalised texture coordinates */ + v4 texRectNdc = texRect; + if (tex) + { + v2 texNdcFactor = V2(1.0f / tex->width, 1.0f / tex->height); + texRectNdc.e[0] *= texNdcFactor.w; + texRectNdc.e[1] *= texNdcFactor.h; + texRectNdc.e[2] *= texNdcFactor.w; + texRectNdc.e[3] *= texNdcFactor.h; + } + + /* Form the quad */ + result.vertex[0] = V4(quadRectNdc.x, quadRectNdc.y, texRectNdc.x, + texRectNdc.y); // Top left + result.vertex[1] = V4(quadRectNdc.x, quadRectNdc.w, texRectNdc.x, + texRectNdc.w); // Bottom left + result.vertex[2] = V4(quadRectNdc.z, quadRectNdc.y, texRectNdc.z, + texRectNdc.y); // Top right + result.vertex[3] = V4(quadRectNdc.z, quadRectNdc.w, texRectNdc.z, + texRectNdc.w); // Bottom right + return result; +} + +INTERNAL inline RenderQuad createQuad(Renderer *renderer, v4 quadRect) +{ + v4 texRect = V4(0, 0, 0, 0); + RenderQuad result = + createTexQuad(renderer, quadRect, texRect, NULL); + return result; +} + +INTERNAL inline RenderQuad +createDefaultTexQuad(Renderer *renderer, v4 texRect, Texture *tex) +{ + RenderQuad result = {0}; + v4 defaultQuad = V4(0.0f, renderer->size.h, renderer->size.w, 0.0f); + result = createTexQuad(renderer, defaultQuad, texRect, tex); + return result; +} + +INTERNAL void renderObject(Renderer *renderer, v2 pos, v2 size, f32 rotate, + v4 color, Texture *tex) +{ + mat4 transMatrix = mat4_translate(pos.x, pos.y, 0.0f); + // NOTE(doyle): Rotate from the center of the object, not its' origin (i.e. + // top left) + mat4 rotateMatrix = mat4_translate((size.x * 0.5f), (size.y * 0.5f), 0.0f); + rotateMatrix = mat4_mul(rotateMatrix, mat4_rotate(rotate, 0.0f, 0.0f, 1.0f)); + rotateMatrix = mat4_mul(rotateMatrix, mat4_translate((size.x * -0.5f), (size.y * -0.5f), 0.0f)); + + // NOTE(doyle): We draw everything as a unit square in OGL. Scale it to size + // TODO(doyle): We should have a notion of hitbox size and texture size + // we're going to render so we can draw textures that may be bigger than the + // entity, (slightly) but keep a consistent bounding box + mat4 scaleMatrix = mat4_scale(size.x, size.y, 1.0f); + mat4 model = mat4_mul(transMatrix, mat4_mul(rotateMatrix, scaleMatrix)); + + /* Load transformation matrix */ + shader_use(renderer->shader); + shader_uniformSetMat4fv(renderer->shader, "model", model); + glCheckError(); + + /* Set color modulation value */ + shader_uniformSetVec4f(renderer->shader, "spriteColor", color); + + /* Send draw calls */ +#if RENDER_BOUNDING_BOX + glBindVertexArray(renderer->vao); + glDrawArrays(GL_TRIANGLE_STRIP, 0, renderer->numVertexesInVbo); + glBindVertexArray(0); +#endif + + if (tex) + { + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, tex->id); + shader_uniformSet1i(renderer->shader, "tex", 0); + } + + glBindVertexArray(renderer->vao); + glDrawArrays(GL_TRIANGLE_STRIP, 0, renderer->numVertexesInVbo); + +#ifdef DENGINE_DEBUG + debug_callCountIncrement(debugcallcount_drawArrays); +#endif + + /* Unbind */ + glBindVertexArray(0); + glBindTexture(GL_TEXTURE_2D, 0); + glCheckError(); +} + +void renderer_rect(Renderer *const renderer, v4 cameraBounds, v2 pos, v2 size, + f32 rotate, Texture *tex, v4 texRect, v4 color) +{ + v4 quadRect = math_getRect(pos, size); + RenderQuad quad = createTexQuad(renderer, quadRect, texRect, tex); + updateBufferObject(renderer, &quad, 1); + + // NOTE(doyle): Get the origin of cameraBounds in world space, bottom left + v2 offsetFromCamOrigin = V2(cameraBounds.x, cameraBounds.w); + v2 rectRelativeToCamera = v2_sub(pos, offsetFromCamOrigin); + renderObject(renderer, rectRelativeToCamera, size, rotate, color, tex); +} + void renderer_string(Renderer *const renderer, v4 cameraBounds, Font *const font, const char *const string, v2 pos, f32 rotate, v4 color) @@ -48,15 +167,15 @@ void renderer_string(Renderer *const renderer, v4 cameraBounds, for (i32 i = 0; i < strLen; i++) { // NOTE(doyle): Atlas packs fonts tightly, so offset the codepoint - // to - // its actual atlas index, i.e. we skip the first 31 glyphs + // to its actual atlas index, i.e. we skip the first 31 glyphs i32 codepoint = string[i]; i32 relativeIndex = codepoint - font->codepointRange.x; CharMetrics charMetric = font->charMetrics[relativeIndex]; pos.y = baseline - (scale * charMetric.offset.y); - const v4 charRectOnScreen = getRect( - pos, V2(scale * CAST(f32) font->maxSize.w, scale * CAST(f32) font->maxSize.h)); + const v4 charRectOnScreen = + math_getRect(pos, V2(scale * CAST(f32) font->maxSize.w, + scale * CAST(f32) font->maxSize.h)); pos.x += scale * charMetric.advance; @@ -64,8 +183,8 @@ void renderer_string(Renderer *const renderer, v4 cameraBounds, v4 charTexRect = font->atlas->texRect[relativeIndex]; renderer_flipTexCoord(&charTexRect, FALSE, TRUE); - RenderQuad charQuad = renderer_createQuad( - renderer, charRectOnScreen, charTexRect, font->tex); + RenderQuad charQuad = createTexQuad(renderer, charRectOnScreen, + charTexRect, font->tex); stringQuads[quadIndex++] = charQuad; } @@ -73,7 +192,7 @@ void renderer_string(Renderer *const renderer, v4 cameraBounds, // relative to the window size, hence we also render at the origin since // we're rendering a window sized buffer updateBufferObject(renderer, stringQuads, quadIndex); - renderer_object(renderer, V2(0.0f, 0.0f), renderer->size, rotate, color, + renderObject(renderer, V2(0.0f, 0.0f), renderer->size, rotate, color, font->tex); PLATFORM_MEM_FREE(stringQuads, strLen * sizeof(RenderQuad)); } @@ -110,97 +229,13 @@ void renderer_entity(Renderer *renderer, v4 cameraBounds, Entity *entity, renderer_flipTexCoord(&texRect, TRUE, FALSE); } RenderQuad entityQuad = - renderer_createDefaultQuad(renderer, texRect, entity->tex); + createDefaultTexQuad(renderer, texRect, entity->tex); updateBufferObject(renderer, &entityQuad, 1); - // NOTE(doyle): The camera origin is 0,0 in world positions v2 offsetFromCamOrigin = V2(cameraBounds.x, cameraBounds.w); v2 entityRelativeToCamera = v2_sub(entity->pos, offsetFromCamOrigin); - renderer_object(renderer, entityRelativeToCamera, entity->size, rotate, - color, entity->tex); + renderObject(renderer, entityRelativeToCamera, entity->size, rotate, + color, entity->tex); } } - -void renderer_object(Renderer *renderer, v2 pos, v2 size, f32 rotate, v4 color, - Texture *tex) -{ - shader_use(renderer->shader); - mat4 transMatrix = mat4_translate(pos.x, pos.y, 0.0f); - - // NOTE(doyle): Rotate from the center of the object, not its' origin (i.e. - // top left) - mat4 rotateMatrix = mat4_translate((size.x * 0.5f), (size.y * 0.5f), 0.0f); - rotateMatrix = mat4_mul(rotateMatrix, mat4_rotate(rotate, 0.0f, 0.0f, 1.0f)); - rotateMatrix = mat4_mul(rotateMatrix, mat4_translate((size.x * -0.5f), (size.y * -0.5f), 0.0f)); - - // NOTE(doyle): We draw everything as a unit square in OGL. Scale it to size - // TODO(doyle): We should have a notion of hitbox size and texture size - // we're going to render so we can draw textures that may be bigger than the - // entity, (slightly) but keep a consistent bounding box - mat4 scaleMatrix = mat4_scale(size.x, size.y, 1.0f); - - mat4 model = mat4_mul(transMatrix, mat4_mul(rotateMatrix, scaleMatrix)); - shader_uniformSetMat4fv(renderer->shader, "model", model); - glCheckError(); - - shader_uniformSetVec4f(renderer->shader, "spriteColor", color); - -#if RENDER_BOUNDING_BOX - glBindVertexArray(renderer->vao); - glDrawArrays(GL_TRIANGLE_STRIP, 0, renderer->numVertexesInVbo); - glBindVertexArray(0); -#endif - - glActiveTexture(GL_TEXTURE0); - - if (tex) - { - glBindTexture(GL_TEXTURE_2D, tex->id); - shader_uniformSet1i(renderer->shader, "tex", 0); - } - - glBindVertexArray(renderer->vao); - glDrawArrays(GL_TRIANGLE_STRIP, 0, renderer->numVertexesInVbo); - -#ifdef DENGINE_DEBUG - debug_callCountIncrement(debugcallcount_drawArrays); -#endif - - glBindVertexArray(0); - - - glBindTexture(GL_TEXTURE_2D, 0); - glCheckError(); -} - -RenderQuad renderer_createQuad(Renderer *renderer, v4 quadRect, v4 texRect, - Texture *tex) -{ - // NOTE(doyle): Draws a series of triangles (three-sided polygons) using - // vertices v0, v1, v2, then v2, v1, v3 (note the order) - RenderQuad result = {0}; - - v4 quadRectNdc = quadRect; - quadRectNdc.e[0] *= renderer->vertexNdcFactor.w; - quadRectNdc.e[1] *= renderer->vertexNdcFactor.h; - quadRectNdc.e[2] *= renderer->vertexNdcFactor.w; - quadRectNdc.e[3] *= renderer->vertexNdcFactor.h; - - v2 texNdcFactor = V2(1.0f / tex->width, 1.0f / tex->height); - v4 texRectNdc = texRect; - texRectNdc.e[0] *= texNdcFactor.w; - texRectNdc.e[1] *= texNdcFactor.h; - texRectNdc.e[2] *= texNdcFactor.w; - texRectNdc.e[3] *= texNdcFactor.h; - - result.vertex[0] = V4(quadRectNdc.x, quadRectNdc.y, texRectNdc.x, - texRectNdc.y); // Top left - result.vertex[1] = V4(quadRectNdc.x, quadRectNdc.w, texRectNdc.x, - texRectNdc.w); // Bottom left - result.vertex[2] = V4(quadRectNdc.z, quadRectNdc.y, texRectNdc.z, - texRectNdc.y); // Top right - result.vertex[3] = V4(quadRectNdc.z, quadRectNdc.w, texRectNdc.z, - texRectNdc.w); // Bottom right - return result; -} diff --git a/src/Shader.c b/src/Shader.c index c1aeeb5..f0a4715 100644 --- a/src/Shader.c +++ b/src/Shader.c @@ -1,29 +1,5 @@ #include "Dengine/Shader.h" -const i32 shader_loadProgram(Shader *const shader, const GLuint vertexShader, - const GLuint fragmentShader) -{ - shader->id = glCreateProgram(); - glAttachShader(shader->id, vertexShader); - glAttachShader(shader->id, fragmentShader); - glLinkProgram(shader->id); - - glDeleteShader(fragmentShader); - glDeleteShader(vertexShader); - - GLint success; - GLchar infoLog[512]; - glGetProgramiv(shader->id, GL_LINK_STATUS, &success); - if (!success) - { - glGetProgramInfoLog(shader->id, 512, NULL, infoLog); - printf("glLinkProgram failed: %s\n", infoLog); - return -1; - } - - return 0; -} - void shader_uniformSet1i(Shader *const shader, const GLchar *name, const GLuint data) { diff --git a/src/Texture.c b/src/Texture.c index a094efd..7b36088 100644 --- a/src/Texture.c +++ b/src/Texture.c @@ -28,8 +28,8 @@ INTERNAL GLint getGLFormat(i32 bytesPerPixel, b32 srgb) } } -Texture genTexture(const GLuint width, const GLuint height, - const GLint bytesPerPixel, const u8 *const image) +Texture texture_gen(const GLuint width, const GLuint height, + const GLint bytesPerPixel, const u8 *const image) { // TODO(doyle): Let us set the parameters gl params as well glCheckError(); diff --git a/src/WorldTraveller.c b/src/WorldTraveller.c index f7f235e..6d32c52 100644 --- a/src/WorldTraveller.c +++ b/src/WorldTraveller.c @@ -92,6 +92,12 @@ void worldTraveller_gameInit(GameState *state, v2i windowSize) { AssetManager *assetManager = &state->assetManager; /* Initialise assets */ + /* Create empty 1x1 4bpp black texture */ + u32 bitmap = (0xFF << 24) | (0xFF << 16) | (0xFF << 8) | (0xFF << 0); + Texture emptyTex = texture_gen(1, 1, 4, CAST(u8 *)(&bitmap)); + assetManager->textures[texlist_empty] = emptyTex; + + /* Load textures */ asset_loadTextureImage(assetManager, "data/textures/WorldTraveller/TerraSprite1024.png", texlist_hero); @@ -105,10 +111,13 @@ void worldTraveller_gameInit(GameState *state, v2i windowSize) const i32 texSize = 1024; v2 texOrigin = V2(0, CAST(f32)(texSize - 128)); terrainAtlas->texRect[terraincoords_ground] = - V4(texOrigin.x, texOrigin.y, texOrigin.x + atlasTileSize, texOrigin.y - atlasTileSize); + V4(texOrigin.x, texOrigin.y, texOrigin.x + atlasTileSize, + texOrigin.y - atlasTileSize); + /* Load shaders */ asset_loadShaderFiles(assetManager, "data/shaders/sprite.vert.glsl", - "data/shaders/sprite.frag.glsl", shaderlist_sprite); + "data/shaders/sprite.frag.glsl", + shaderlist_sprite); asset_loadTTFont(assetManager, "C:/Windows/Fonts/Arialbd.ttf"); glCheckError(); @@ -135,8 +144,9 @@ void worldTraveller_gameInit(GameState *state, v2i windowSize) v2 worldDimensionInTilesf = V2(CAST(f32) worldDimensionInTiles.x, CAST(f32) worldDimensionInTiles.y); - world->bounds = getRect(V2(0, 0), v2_scale(worldDimensionInTilesf, - CAST(f32) state->tileSize)); + world->bounds = + math_getRect(V2(0, 0), v2_scale(worldDimensionInTilesf, + CAST(f32) state->tileSize)); TexAtlas *const atlas = asset_getTextureAtlas(assetManager, world->texType); @@ -403,7 +413,7 @@ void worldTraveller_gameUpdateAndRender(GameState *state, const f32 dt) #endif /* Recalculate rendering bounds */ - v4 cameraBounds = getRect(world->cameraPos, renderer->size); + v4 cameraBounds = math_getRect(world->cameraPos, renderer->size); // NOTE(doyle): Lock camera if it passes the bounds of the world if (cameraBounds.x <= world->bounds.x) { @@ -441,12 +451,9 @@ void worldTraveller_gameUpdateAndRender(GameState *state, const f32 dt) renderer_entity(&state->renderer, cameraBounds, entity, dt, rotate, V4(1, 1, 1, 1)); - // TODO(doyle): Clean up lines - // Renderer::~Renderer() { glDeleteVertexArrays(1, &this->quadVAO); } /* Game logic */ - if (entity->type == entitytype_hero) continue; - else if (entity->type == entitytype_mob) + if (entity->type == entitytype_mob) { // TODO(doyle): Currently calculated in pixels, how about meaningful // game units? @@ -468,6 +475,11 @@ void worldTraveller_gameUpdateAndRender(GameState *state, const f32 dt) renderer_staticString(&state->renderer, font, battleStr, strPos, 0, color); #endif + Texture *emptyTex = + asset_getTexture(assetManager, texlist_empty); + renderer_rect(renderer, cameraBounds, hero->pos, + V2(distance, 100.0f), 0, emptyTex, V4(0, 1, 1, 0), + V4(1, 0, 0, 1)); } } diff --git a/src/include/Dengine/AssetManager.h b/src/include/Dengine/AssetManager.h index 1cc328e..4d865f2 100644 --- a/src/include/Dengine/AssetManager.h +++ b/src/include/Dengine/AssetManager.h @@ -8,6 +8,7 @@ enum TexList { + texlist_empty, texlist_hero, texlist_terrain, texlist_font, diff --git a/src/include/Dengine/Entity.h b/src/include/Dengine/Entity.h index 719685a..9ec172f 100644 --- a/src/include/Dengine/Entity.h +++ b/src/include/Dengine/Entity.h @@ -54,7 +54,7 @@ typedef struct Entity INTERNAL inline v4 getEntityScreenRect(Entity entity) { - v4 result = getRect(entity.pos, entity.size); + v4 result = math_getRect(entity.pos, entity.size); return result; } diff --git a/src/include/Dengine/Math.h b/src/include/Dengine/Math.h index c18a5ac..720a07b 100644 --- a/src/include/Dengine/Math.h +++ b/src/include/Dengine/Math.h @@ -269,7 +269,7 @@ INTERNAL inline v4 mat4_mul_v4(const mat4 a, const v4 b) return result; } -INTERNAL inline v4 getRect(v2 origin, v2 size) +INTERNAL inline v4 math_getRect(v2 origin, v2 size) { v2 upperLeftBound = v2_add(origin, V2(0.0f, size.y)); v2 lowerRightBound = v2_add(origin, V2(size.x, 0.0f)); @@ -280,7 +280,7 @@ INTERNAL inline v4 getRect(v2 origin, v2 size) return result; } -INTERNAL inline v2 getRectSize(v4 rect) +INTERNAL inline v2 math_getRectSize(v4 rect) { f32 width = ABS(rect.x - rect.z); f32 height = ABS(rect.y - rect.w); diff --git a/src/include/Dengine/Renderer.h b/src/include/Dengine/Renderer.h index 6fe9303..f21a0e4 100644 --- a/src/include/Dengine/Renderer.h +++ b/src/include/Dengine/Renderer.h @@ -19,6 +19,12 @@ typedef struct RenderQuad v4 vertex[4]; } RenderQuad; +// TODO(doyle): Clean up lines +// Renderer::~Renderer() { glDeleteVertexArrays(1, &this->quadVAO); } + +void renderer_rect(Renderer *const renderer, v4 cameraBounds, v2 pos, v2 size, + f32 rotate, Texture *tex, v4 texRect, v4 color); + void renderer_string(Renderer *const renderer, v4 cameraBounds, Font *const font, const char *const string, v2 pos, f32 rotate, v4 color); @@ -34,12 +40,6 @@ inline void renderer_staticString(Renderer *const renderer, Font *const font, void renderer_entity(Renderer *renderer, v4 cameraBounds, Entity *entity, f32 dt, f32 rotate, v4 color); -void renderer_object(Renderer *renderer, v2 pos, v2 size, f32 rotate, v4 color, - Texture *tex); - -RenderQuad renderer_createQuad(Renderer *renderer, v4 quadRect, v4 texRect, - Texture *tex); - INTERNAL inline void renderer_flipTexCoord(v4 *texCoords, b32 flipX, b32 flipY) { if (flipX) @@ -56,14 +56,4 @@ INTERNAL inline void renderer_flipTexCoord(v4 *texCoords, b32 flipX, b32 flipY) texCoords->w = tmp.y; } } - -INTERNAL inline RenderQuad renderer_createDefaultQuad(Renderer *renderer, - v4 texRect, Texture *tex) -{ - RenderQuad result = {0}; - v4 defaultQuad = V4(0.0f, renderer->size.h, renderer->size.w, 0.0f); - result = renderer_createQuad(renderer, defaultQuad, texRect, tex); - return result; -} - #endif diff --git a/src/include/Dengine/Shader.h b/src/include/Dengine/Shader.h index 911d60e..e47bf46 100644 --- a/src/include/Dengine/Shader.h +++ b/src/include/Dengine/Shader.h @@ -9,10 +9,6 @@ typedef struct Shader GLuint id; } Shader; -const i32 shader_loadProgram(Shader *const shader, - const GLuint vertexShader, - const GLuint fragmentShader); - void shader_uniformSet1i(Shader *const shader, const GLchar *name, const GLuint data); void shader_uniformSetMat4fv(Shader *const shader, const GLchar *name, diff --git a/src/include/Dengine/Texture.h b/src/include/Dengine/Texture.h index 22299ef..dc4b368 100644 --- a/src/include/Dengine/Texture.h +++ b/src/include/Dengine/Texture.h @@ -32,7 +32,7 @@ typedef struct Texture } Texture; // Generates texture from image data -Texture genTexture(const GLuint width, const GLuint height, - const GLint bytesPerPixel, const u8 *const image); +Texture texture_gen(const GLuint width, const GLuint height, + const GLint bytesPerPixel, const u8 *const image); #endif