Test text rendering
This commit is contained in:
@@ -19,12 +19,9 @@ typedef enum {
|
||||
ASSET_TYPE_NULL,
|
||||
|
||||
ASSET_TYPE_TEXTURE,
|
||||
// ASSET_TYPE_PALETTE,
|
||||
ASSET_TYPE_TILESET,
|
||||
ASSET_TYPE_LANGUAGE,
|
||||
ASSET_TYPE_SCRIPT,
|
||||
ASSET_TYPE_MAP,
|
||||
ASSET_TYPE_MAP_CHUNK,
|
||||
|
||||
ASSET_TYPE_COUNT,
|
||||
} assettype_t;
|
||||
@@ -60,21 +57,14 @@ static const assettypedef_t ASSET_TYPE_DEFINITIONS[ASSET_TYPE_COUNT] = {
|
||||
},
|
||||
|
||||
[ASSET_TYPE_TEXTURE] = {
|
||||
.extension = "dpt",
|
||||
.extension = "DTX",
|
||||
.loadStrategy = ASSET_LOAD_STRAT_ENTIRE,
|
||||
.dataSize = sizeof(assettexture_t),
|
||||
.entire = assetTextureLoad
|
||||
},
|
||||
|
||||
// [ASSET_TYPE_PALETTE] = {
|
||||
// .extension = "dpf",
|
||||
// .loadStrategy = ASSET_LOAD_STRAT_ENTIRE,
|
||||
// .dataSize = sizeof(palette_t),
|
||||
// .entire = assetPaletteLoad
|
||||
// },
|
||||
|
||||
[ASSET_TYPE_TILESET] = {
|
||||
.extension = "dtf",
|
||||
.extension = "DTF",
|
||||
.loadStrategy = ASSET_LOAD_STRAT_ENTIRE,
|
||||
.dataSize = sizeof(assettileset_t),
|
||||
.entire = assetTilesetLoad
|
||||
@@ -91,16 +81,4 @@ static const assettypedef_t ASSET_TYPE_DEFINITIONS[ASSET_TYPE_COUNT] = {
|
||||
.loadStrategy = ASSET_LOAD_STRAT_CUSTOM,
|
||||
.custom = assetScriptHandler
|
||||
},
|
||||
|
||||
// [ASSET_TYPE_MAP] = {
|
||||
// .extension = "DMF",
|
||||
// .loadStrategy = ASSET_LOAD_STRAT_CUSTOM,
|
||||
// .custom = assetMapHandler
|
||||
// },
|
||||
|
||||
// [ASSET_TYPE_MAP_CHUNK] = {
|
||||
// .extension = "DMC",
|
||||
// .loadStrategy = ASSET_LOAD_STRAT_CUSTOM,
|
||||
// .custom = assetMapChunkHandler
|
||||
// },
|
||||
};
|
||||
@@ -12,50 +12,67 @@
|
||||
#include "util/endian.h"
|
||||
|
||||
errorret_t assetTextureLoad(assetentire_t entire) {
|
||||
// assertNotNull(entire.data, "Data pointer cannot be NULL.");
|
||||
// assertNotNull(entire.output, "Output pointer cannot be NULL.");
|
||||
assertNotNull(entire.data, "Data pointer cannot be NULL.");
|
||||
assertNotNull(entire.output, "Output pointer cannot be NULL.");
|
||||
|
||||
// assettexture_t *assetData = (assettexture_t *)entire.data;
|
||||
// texture_t *texture = (texture_t *)entire.output;
|
||||
assettexture_t *assetData = (assettexture_t *)entire.data;
|
||||
texture_t *texture = (texture_t *)entire.output;
|
||||
|
||||
// // Read header and version (first 4 bytes)
|
||||
// if(
|
||||
// assetData->header[0] != 'D' ||
|
||||
// assetData->header[1] != 'P' ||
|
||||
// assetData->header[2] != 'T'
|
||||
// ) {
|
||||
// errorThrow("Invalid texture header");
|
||||
// }
|
||||
// Read header and version (first 4 bytes)
|
||||
if(
|
||||
assetData->header[0] != 'D' ||
|
||||
assetData->header[1] != 'T' ||
|
||||
assetData->header[2] != 'X'
|
||||
) {
|
||||
errorThrow("Invalid texture header");
|
||||
}
|
||||
|
||||
// // Version (can only be 1 atm)
|
||||
// if(assetData->version != 0x01) {
|
||||
// errorThrow("Unsupported texture version");
|
||||
// }
|
||||
// Version (can only be 1 atm)
|
||||
if(assetData->version != 0x01) {
|
||||
errorThrow("Unsupported texture version");
|
||||
}
|
||||
|
||||
// // Fix endian
|
||||
// assetData->width = endianLittleToHost32(assetData->width);
|
||||
// assetData->height = endianLittleToHost32(assetData->height);
|
||||
// Fix endian
|
||||
assetData->width = endianLittleToHost32(assetData->width);
|
||||
assetData->height = endianLittleToHost32(assetData->height);
|
||||
|
||||
// // Check dimensions.
|
||||
// if(
|
||||
// assetData->width == 0 || assetData->width > ASSET_TEXTURE_WIDTH_MAX ||
|
||||
// assetData->height == 0 || assetData->height > ASSET_TEXTURE_HEIGHT_MAX
|
||||
// ) {
|
||||
// errorThrow("Invalid texture dimensions");
|
||||
// }
|
||||
|
||||
// textureInit(
|
||||
// texture,
|
||||
// assetData->width,
|
||||
// assetData->height,
|
||||
// TEXTURE_FORMAT_PALETTE,
|
||||
// (texturedata_t){
|
||||
// .paletted = {
|
||||
// .indices = NULL,
|
||||
// .palette = NULL
|
||||
// }
|
||||
// }
|
||||
// );
|
||||
// Check dimensions.
|
||||
if(
|
||||
assetData->width == 0 || assetData->width > ASSET_TEXTURE_WIDTH_MAX ||
|
||||
assetData->height == 0 || assetData->height > ASSET_TEXTURE_HEIGHT_MAX
|
||||
) {
|
||||
errorThrow("Invalid texture dimensions");
|
||||
}
|
||||
|
||||
// errorOk();
|
||||
// Validate format
|
||||
textureformat_t format;
|
||||
texturedata_t data;
|
||||
|
||||
switch(assetData->type) {
|
||||
case 0x00: // RGBA8888
|
||||
format = TEXTURE_FORMAT_RGBA;
|
||||
data.rgbaColors = (color_t *)assetData->data;
|
||||
break;
|
||||
|
||||
// case 0x01:
|
||||
// format = TEXTURE_FORMAT_RGB;
|
||||
// break;
|
||||
|
||||
// case 0x02:
|
||||
// format = TEXTURE_FORMAT_RGB565;
|
||||
// break;
|
||||
|
||||
// case 0x03:
|
||||
// format = TEXTURE_FORMAT_RGB5A3;
|
||||
// break;
|
||||
|
||||
default:
|
||||
errorThrow("Unsupported texture format");
|
||||
}
|
||||
|
||||
errorChain(textureInit(
|
||||
texture, assetData->width, assetData->height, format, data
|
||||
));
|
||||
|
||||
errorOk();
|
||||
}
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
#pragma once
|
||||
#include "error/error.h"
|
||||
#include "display/color.h"
|
||||
|
||||
#define ASSET_TEXTURE_WIDTH_MAX 2048
|
||||
#define ASSET_TEXTURE_HEIGHT_MAX 2048
|
||||
@@ -20,9 +21,10 @@ typedef struct assetentire_s assetentire_t;
|
||||
typedef struct {
|
||||
char_t header[3];
|
||||
uint8_t version;
|
||||
uint8_t type;
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
uint8_t palette[ASSET_TEXTURE_SIZE_MAX];
|
||||
uint8_t data[ASSET_TEXTURE_SIZE_MAX * sizeof(color4b_t)];
|
||||
} assettexture_t;
|
||||
#pragma pack(pop)
|
||||
|
||||
|
||||
@@ -11,17 +11,19 @@
|
||||
#include "display/spritebatch/spritebatch.h"
|
||||
#include "asset/asset.h"
|
||||
|
||||
#include "display/shader/shaderunlit.h"
|
||||
|
||||
texture_t DEFAULT_FONT_TEXTURE;
|
||||
tileset_t DEFAULT_FONT_TILESET;
|
||||
|
||||
errorret_t textInit(void) {
|
||||
// errorChain(assetLoad("ui/minogram.dpt", &DEFAULT_FONT_TEXTURE));
|
||||
// errorChain(assetLoad("ui/minogram.dtf", &DEFAULT_FONT_TILESET));
|
||||
errorChain(assetLoad("ui/minogram.dtx", &DEFAULT_FONT_TEXTURE));
|
||||
errorChain(assetLoad("ui/minogram.dtf", &DEFAULT_FONT_TILESET));
|
||||
errorOk();
|
||||
}
|
||||
|
||||
errorret_t textDispose(void) {
|
||||
// errorChain(textureDispose(&DEFAULT_FONT_TEXTURE));
|
||||
errorChain(textureDispose(&DEFAULT_FONT_TEXTURE));
|
||||
errorOk();
|
||||
}
|
||||
|
||||
@@ -45,6 +47,8 @@ errorret_t textDrawChar(
|
||||
vec4 uv;
|
||||
tilesetTileGetUV(tileset, tileIndex, uv);
|
||||
|
||||
errorChain(shaderSetTexture(&SHADER_UNLIT, SHADER_UNLIT_TEXTURE, texture));
|
||||
|
||||
errorChain(spriteBatchPush(
|
||||
// texture,
|
||||
x, y,
|
||||
|
||||
Reference in New Issue
Block a user