Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Phili
unregistriert
C-/C++-Quelltext |
|
1 |
ifstream ifs("a", ios::binary); |
Phili
unregistriert
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
class PH3DTextureBuffer { public: int AufloesungX; int AufloesungY; IDirect3DTexture9 *HardBuffer; int Name[100]; char *SoftBuffer; void Laden(char *filename); void Erstellen(PH3DDevice D3DDev); }; void PH3DTextureBuffer::Laden(char *filename) { for(int i=0; i<100; i++) { Name[i]=filename[i]; if(filename[i]=='\0') break; } ifstream ifs(filename); char Bytes[100]; ifs.read((char*)&Bytes, 10); DWORD Offset; LONG Hoehe; LONG Breite; ifs.read((char*)&Offset, 4); ifs.read((char*)&Bytes, 4); ifs.read((char*)&Breite, 4); ifs.read((char*)&Hoehe, 4); ifs.read((char*)&Bytes, 28+(Offset-54)); AufloesungX=Breite; AufloesungY=Hoehe; SoftBuffer=new char[3*Hoehe*Breite]; ifs.read((char*)SoftBuffer, 3*Hoehe*Breite); } void PH3DTextureBuffer::Erstellen(PH3DDevice D3DDev) { D3DDev.D3DDev->CreateTexture(AufloesungX, AufloesungY, 0, 0, D3DFMT_R8G8B8, D3DPOOL_MANAGED, &HardBuffer, NULL); D3DLOCKED_RECT Rect; HardBuffer->LockRect(0, &Rect, NULL, 0); memcpy((void*)&Rect, (void*)&SoftBuffer, AufloesungX*AufloesungY*3); HardBuffer->UnlockRect(0); } |
Phili
unregistriert
Phili
unregistriert
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
struct PH3DBitmapHeader { WORD bfType; DWORD bfSize; DWORD bfReserved; DWORD bfOffbits; }; struct PH3DBitmapInfo { DWORD biSize; LONG biWidth; LONG biHeight; WORD biPlanes; WORD biBitCount; DWORD biCompression; DWORD biSizeImage; LONG biXPelsPerMeter; LONG biYPelsPerMeter; DWORD biClrUsed; DWORD biClrImportant; }; class PH3DTextureBuffer { public: int AufloesungX; int AufloesungY; IDirect3DTexture9 *HardBuffer; int Name[100]; char *SoftBuffer; void Laden(char *filename); void Erstellen(PH3DDevice D3DDev); }; void PH3DTextureBuffer::Laden(char *filename) { for(int i=0; i<100; i++) { Name[i]=filename[i]; if(filename[i]=='\0') break; } ifstream ifs(filename); PH3DBitmapHeader Header; PH3DBitmapInfo Info; ifs.read((char*)&Header, 14); ifs.read((char*)&Info, 40); AufloesungX=Info.biWidth; AufloesungY=Info.biHeight; SoftBuffer=new char[3*AufloesungX*AufloesungY]; ifs.read((char*)&SoftBuffer[0], 3*AufloesungX*AufloesungY); } void PH3DTextureBuffer::Erstellen(PH3DDevice D3DDev) { ofstream prot("Prot.txt"); D3DDev.D3DDev->CreateTexture(AufloesungX, AufloesungY, 1, 0, D3DFMT_R8G8B8, D3DPOOL_DEFAULT, &HardBuffer, NULL); D3DLOCKED_RECT Rect; HardBuffer->LockRect(0, &Rect, NULL, 0); memcpy(&Rect, (void*)&SoftBuffer, AufloesungX*AufloesungY*3); HardBuffer->UnlockRect(0); } |
Anonymous
unregistriert
Anonymous
unregistriert
C-/C++-Quelltext |
|
1 2 3 |
const unsigned long x = 0; const unsigned long y = -1; const unsigned long z = -2; |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
BITMAPINFOHEADER LoadBitmapFromFile(IrrlichtDevice* device, char* name, char** data) { BITMAPFILEHEADER FileHeader; // BMP Datei Header BITMAPINFOHEADER InfoHeader; // BMP Datei Info Header memset(&InfoHeader, 0, sizeof(InfoHeader)); if(!device || !name || !data) return InfoHeader; io::IReadFile* file = device->getFileSystem()->createAndOpenFile(name); file->read(&FileHeader, sizeof(BITMAPFILEHEADER)); file->read(&InfoHeader, sizeof(BITMAPINFOHEADER)); *data = new char[InfoHeader.biSizeImage]; file->read(*data, InfoHeader.biSizeImage); file->drop(); return InfoHeader; } bool SaveBitmapToFile(IrrlichtDevice* device, char* name, BITMAPINFOHEADER InfoHeader, char* data) { BITMAPFILEHEADER FileHeader; // BMP Datei Header InfoHeader.biSizeImage = InfoHeader.biWidth * InfoHeader.biHeight * InfoHeader.biBitCount / 8; FileHeader.bfOffBits = sizeof(BITMAPINFOHEADER) + sizeof(BITMAPFILEHEADER); FileHeader.bfSize = InfoHeader.biSizeImage + FileHeader.bfOffBits; FileHeader.bfType = 19778; FileHeader.bfReserved1 = 0; FileHeader.bfReserved2 = 0; io::IWriteFile* file = device->getFileSystem()->createAndWriteFile(name); file->write(&FileHeader, sizeof(BITMAPFILEHEADER)); file->write(&InfoHeader, sizeof(BITMAPINFOHEADER)); file->write(data, InfoHeader.biSizeImage); file->drop(); return true; } //Textur in 4 texturen spliten { char* daten, *tempdaten; BITMAPINFOHEADER InfoHeader = LoadBitmapFromFile(device, (char*)HMap.c_str(), &daten); InfoHeader.biHeight = (long)(InfoHeader.biHeight * 0.5); InfoHeader.biWidth = (long)(InfoHeader.biWidth * 0.5); InfoHeader.biSizeImage = InfoHeader.biWidth * InfoHeader.biHeight * InfoHeader.biBitCount / 8; dim.Height = InfoHeader.biHeight; dim.Width = InfoHeader.biWidth; tempdaten = new char[InfoHeader.biSizeImage]; for(int counter = 0; counter < dim.Height; counter++) memcpy(tempdaten + (int)(counter * dim.Width * 3), daten + ((dim.Height * 2 - counter - 1) * dim.Width * 6), dim.Width * 3); SaveBitmapToFile(device, "temp1-heightmap.bmp", InfoHeader, tempdaten); for(int counter = 0; counter < dim.Height; counter++) memcpy(tempdaten + (int)(counter * dim.Width * 3), daten + ((dim.Height * 2 - counter - 1) * dim.Width * 6) + dim.Width * 3, dim.Width * 3); SaveBitmapToFile(device, "temp2-heightmap.bmp", InfoHeader, tempdaten); for(int counter = 0; counter < dim.Height; counter++) memcpy(tempdaten + (int)(counter * dim.Width * 3), daten + ((dim.Height - counter - 1) * dim.Width * 6) + dim.Width * 3, dim.Width * 3); SaveBitmapToFile(device, "temp3-heightmap.bmp", InfoHeader, tempdaten); for(int counter = 0; counter < dim.Height; counter++) memcpy(tempdaten + (int)(counter * dim.Width * 3), daten + ((dim.Height - counter - 1) * dim.Width * 6), dim.Width * 3); SaveBitmapToFile(device, "temp4-heightmap.bmp", InfoHeader, tempdaten); delete[] tempdaten; delete[] daten; } |
Phili
unregistriert
C-/C++-Quelltext |
|
1 |
WORD biBitCount; |
Anonymous
unregistriert
Werbeanzeige