gdzie jest błąd bo jak tworzy plik basetexture.dat to plik jest wypełniony tymi samymi danymi na poglądzie tzn view'erem czy też notatnikiem
// ConsoleApplication3.cpp : Ten plik zawiera funkcję „main”. W nim rozpoczyna się i kończy wykonywanie programu.
#include <iostream>
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include "MyStringC++11.h"
#define BITMAP_ID 0x4D42
using namespace std;
#pragma warning(disable : 4996)
unsigned char* LoadBitmapFile(
char* filename, int& w, int& h,
BITMAPINFOHEADER* bitmapInfoHeader)
{
FILE* filePtr;
BITMAPFILEHEADER bitmapFileHeader;
unsigned char* bitmapImage;
filePtr = fopen(filename, "rb");
if (!filePtr)
return NULL;
fread(
&bitmapFileHeader,
sizeof(BITMAPFILEHEADER),
1,
filePtr);
if (bitmapFileHeader.bfType != 0x4D42)
{
fclose(filePtr);
return NULL;
}
fread(
bitmapInfoHeader,
sizeof(BITMAPINFOHEADER),
1,
filePtr);
if (bitmapInfoHeader->biBitCount != 24)
{
fclose(filePtr);
return NULL;
}
fseek(
filePtr,
bitmapFileHeader.bfOffBits,
SEEK_SET);
DWORD imageSize =
bitmapInfoHeader->biSizeImage;
if (imageSize == 0)
{
int rowSize =
((bitmapInfoHeader->biWidth * 3 + 3) & ~3);
imageSize =
rowSize *
abs(bitmapInfoHeader->biHeight);
}
bitmapImage =
(unsigned char*)malloc(imageSize);
if (!bitmapImage)
{
fclose(filePtr);
return NULL;
}
fread(
bitmapImage,
1,
imageSize,
filePtr);
fclose(filePtr);
w = bitmapInfoHeader->biWidth;
h = bitmapInfoHeader->biHeight;
return bitmapImage;
}
class Texture
{
public:
unsigned char* data_image;
int w, h;
unsigned int idtexture;
void SetIdTexure(int id)
{
idtexture = id;
}
void SetTexture(int x, int y, unsigned char* data)
{
w = x;
h = y;
data_image = new unsigned char[w * h * 3];
data_image = data;
}
void Free()
{
w = 0;
h = 0;
idtexture = 0;
delete []data_image;
}
};
Texture index[1000];
class TextureBase
{
public:
TextureBase();
~TextureBase();
int total;
void AddTexture(char* filename)
{
int w, h;
BITMAPINFOHEADER bitmapInfoHeader;
unsigned char* bdata = LoadBitmapFile(filename, w, h, &bitmapInfoHeader);
index[total].SetTexture(w, h, bdata);
total += 1;
delete bdata;
}
void unLoad()
{
for (int i = 0; i < total; i += 1)
index[i].Free();
total = 0;
}
bool LoadFile(char* filename)
{
FILE* file;
file = fopen(filename, "rb");
int w, h;
char id0;
char id1;
char id2;
fread(&id0, sizeof(id0), 1, file);
fread(&id1, sizeof(id1), 1, file);
fread(&id2, sizeof(id2), 1, file);
if (id0 == 'M' && id1 == 'D' && id2 == 'G')
{
fread(&total, sizeof(total), 1, file);
for (int i = 0; i < total; i += 1)
{
fread(&w, sizeof(w), 1, file);
fread(&h, sizeof(h), 1, file);
unsigned char* data = new unsigned char[w * h * 3];
fread(data, sizeof(unsigned char), w * h * 3, file);
index[i].SetTexture(w, h, data);
delete data;
}
fclose(file);
return true;
}
else
{
fclose(file);
return false;
}
}
void SaveToFile(char* filename)
{
FILE* file;
file = fopen(filename, "wb");
char id0 = 'M';
char id1 = 'D';
char id2 = 'G';
fwrite(&id0, 1, 1, file);
fwrite(&id1, 1, 1, file);
fwrite(&id2, 1, 1, file);
fwrite(&total, 4, 1, file);
for (int i = 0; i < total; i += 1)
{
fwrite(&index[i].w, 4, 1, file);
fwrite(&index[i].h, 4, 1, file);
int s = index[i].w * index[i].h * 3;
fwrite(index[i].data_image, 1, s, file);
}
fclose(file);
}
};
TextureBase::TextureBase()
{
total = 0;
}
TextureBase::~TextureBase()
{
}
MyString file_list[100];
int t = 0;
void GetListFile(char* path, char* ext)
{
MyString lpFile;
lpFile.Add(path);
lpFile.Add((char*)"*.");
lpFile.Add(ext);
WIN32_FIND_DATA wfd;
HANDLE h = FindFirstFile((LPCSTR)lpFile.GetData(), &wfd);
if (wfd.dwFileAttributes != FILE_ATTRIBUTE_DIRECTORY)
{
file_list[t].Add(path);
file_list[t].Add(wfd.cFileName);
cout << file_list[t].GetData() << endl;
t += 1;
}
while (FindNextFile(h, &wfd) != 0)
{
if (wfd.dwFileAttributes != FILE_ATTRIBUTE_DIRECTORY)
{
file_list[t].Add(path);
file_list[t].Add(wfd.cFileName);
cout << file_list[t].GetData() << endl;
t += 1;
}
}
FindClose(h);
}
int main(int argc, char* argv[])
{
cout << "LISTA PLIKOW DO BAZY:" << endl;
GetListFile((char*)"gfx/", (char*)"bmp");
TextureBase tb;
for (int i = 0; i < t; i += 1)
{
tb.AddTexture(file_list[i].GetData());
}
tb.SaveToFile((char*)"basetexture.dat");
cout << "BAZA ZAPISANA!" << endl;
system("pause");
return 0;
}
// Porady dotyczące rozpoczynania pracy:
// 1. Użyj okna Eksploratora rozwiązań, aby dodać pliki i zarządzać nimi
// 2. Użyj okna programu Team Explorer, aby nawiązać połączenie z kontrolą źródła
// 3. Użyj okna Dane wyjściowe, aby sprawdzić dane wyjściowe kompilacji i inne komunikaty
// 4. Użyj okna Lista błędów, aby zobaczyć błędy
// 5. Wybierz pozycję Projekt > Dodaj nowy element, aby utworzyć nowe pliki kodu, lub wybierz pozycję Projekt > Dodaj istniejący element, aby dodać istniejące pliku kodu do projektu
// 6. Aby w przyszłości ponownie otworzyć ten projekt, przejdź do pozycji Plik > Otwórz > Projekt i wybierz plik sln