Nexus86Medlem sedan okt. 20023 030 inlägg Jag har skrivit ett eget bildformat att använda i mina spel (vet att det redan finns hundratals bildformat men det är alltid kul att göra något eget :p) och nu undrar jag, hur läser jag snabbast in det?
Som det är nu använder jag CreateCompatibleDC och CreateCompatibleBitmap till displayens hDC och sedan ritar jag ut pixel för pixel med SetPixel. Finns det någon snabbare metod att göra det på?
Jag använder MSVC++ 6.0 och Windows.
Alpha IIMedlem sedan maj 20002 993 inlägg Att rita med Windows GUI är aldrig snabbt och är inte lämpligt för ett spel.
Jag kan själv inte DirectX men i OpenGL är det väldigt enkelt att läsa in texturer genom att först läsa in pixeldatan i en array och sedan skicka arrayen till en av OpenGLs funktioner.
Att skapa ett eget bildformat vinner du nog inte så mycket på, för det finns som du säger, redan så många och du kommer nog inte lyckas skapa ett bildformat själv som komprimerar bättre än några av de existerande. ;) :p På http://www.wotsit.org/ kan du läsa hur de vanligaste filformaten är uppbyggda.
Nexus86Medlem sedan okt. 20023 030 inlägg Spelet är inte något tungt direkt utan ett litet 2D-spel och för det tycker jag GDI passar rätt bra och enda orsaken till att jag vill göra ett eget bildformat är att jag dels vill kolla om jag kan samt att jag inte vill låta spelare kunna ändra mina bilder. :)
Det fick bli så att jag använder SetDIBitsToDevice vilket funkar snabbt nog. :)
Alpha II skrev:
Att rita med Windows GUI är aldrig snabbt och är inte lämpligt för ett spel.
GDI lämpar sig utmärkt för spel. Det är inte för långsamt.
Olämpligt är det om man gör 3D-spel, använder sig mycket av alpha blending eller något annat som hårdvaran är bra på att snabba upp.
Alpha IIMedlem sedan maj 20002 993 inlägg
Sang-drax skrev:
Alpha II skrev:
Att rita med Windows GUI är aldrig snabbt och är inte lämpligt för ett spel.
GDI lämpar sig utmärkt för spel. Det är inte för långsamt.
Olämpligt är det om man gör 3D-spel, använder sig mycket av alpha blending eller något annat som hårdvaran är bra på att snabba upp.
Det beror ju som sagt på. Men i alla mina spel har det krävts rotering av spritar och mycket texturer vilket aldrig funkat speciellt bra i GDI.
Hur du läser in bildformatet beror ju på hur det ser ut.
En liten exempel-kod:
FILE *pFile = NULL;
pFile = fopen("bild.mittformat","rb");
if (pFile == NULL)
return 0;
fread(&imgWidth, sizeof(imgWidth), pFile);
fread(&imgHeight, sizeof(imgHeight), pFile);
fread(&imgBPP, sizeof(imgBPP), pFile);
imgSize = imgWidth * imgHeight * imgBPP;
pixeldata = new BYTE[imgSize];
fread(pixeldata, imgSize, pFile);
fclose(pFile);