Implemented getTextureBatch()

This commit is contained in:
_ 2018-04-04 19:38:30 -07:00
parent a446dd8741
commit cff2209971
3 changed files with 40 additions and 14 deletions

View File

@ -46,4 +46,7 @@ void gettbd(struct TextureBatchDescriptor**,
const char*, const char*,
unsigned int); unsigned int);
void gettexturebatch(struct TextureBatch**,
const char*,
unsigned int);
#endif #endif

View File

@ -1,5 +1,6 @@
#include "devil1tex.h" #include "devil1tex.h"
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#include <string.h> #include <string.h>
void printtph (struct TexturePack *tp) { void printtph (struct TexturePack *tp) {
@ -55,3 +56,23 @@ void gettbd (struct TextureBatchDescriptor **descriptors,
return; return;
} }
void gettexturebatch(struct TextureBatch **tb,
const char *filedata,
unsigned int filesize) {
struct TexturePack *tp = (struct TexturePack*)filedata;
struct TextureBatchDescriptor **bds = NULL;
bds = (struct TextureBatchDescriptor**)malloc(tp -> batchNumber);
gettbd(bds, filedata, filesize);
unsigned int offset = tp -> firstBatchOffset;
unsigned int i;
unsigned int j;
// TextureBatch shares a starting address with the first texture
// and shares the ending address with the last texture.
for (i = 0; i < tp -> batchNumber; i++) {
printf("%x \n", offset);
tb[i] = (struct TextureBatch*)filedata + offset;
// the next texture batch is TextureSize * number of textures away.
offset += bds[i] -> textureSize * (bds[i] -> texNumber);
}
free(bds);
}

View File

@ -90,28 +90,30 @@ bool unpackpld (const char *filedata,
return status; return status;
} }
/* void unpacktextures(const char *filedata, unsigned int filesize) {
struct TexturePack *tp = (struct TexturePack*)filedata;
int main(int argc, char ** argv) {
char *f = argv[1];
unsigned int bufsize = 0;
char *buffer = loadfile(f, &bufsize);
// unpackpld(buffer, bufsize, f);
struct TexturePack *tp = NULL;
printf("%d %d %d %d \n", buffer[0],
buffer[1],
buffer[2],
buffer[3]);
tp = (struct TexturePack*)buffer;
struct TextureBatchDescriptor **bds = NULL; struct TextureBatchDescriptor **bds = NULL;
bds = (struct TextureBatchDescriptor**)malloc(tp -> batchNumber); bds = (struct TextureBatchDescriptor**)malloc(tp -> batchNumber);
gettbd(bds, buffer, bufsize); gettbd(bds, filedata, filesize);
printtph(tp); printtph(tp);
int i; int i;
for (i = 0; i < tp -> batchNumber; i++) { for (i = 0; i < tp -> batchNumber; i++) {
printtbd(bds[i]); printtbd(bds[i]);
} }
free(bds); free(bds);
return;
} */
int main(int argc, char ** argv) {
char *f = argv[1];
unsigned int bufsize = 0;
char *buffer = loadfile(f, &bufsize);
// unpackpld(buffer, bufsize, f);
// unpacktextures(buffer, bufsize);
struct TexturePack *tp = (struct TexturePack*)buffer;
struct TextureBatch **batches = NULL;
batches = (struct TextureBatch**)malloc(tp -> batchNumber);
gettexturebatch(batches, buffer, bufsize);
free(buffer); free(buffer);
return 0; return 0;
} }