HTML

Despina

Sugárkövetés (raytracing) megvalósítása c++ nyelvben.

Friss topikok

  • tormanator: Az internet nagy hátránya, hogy még szabadidődben is beleszólnak abba, amit csinálsz. float oké, ... (2011.09.03. 19:26) 3D-s vektor osztály
  • tormanator: Látványosan elakadtál, akkor majd én folytatom. sugarkovetes.blog.hu/ (2011.09.03. 14:34) Metszéspontszámítás 1
  • sirpalee: Ne írj saját bmp mentőt. 1. OIIO - win alá macerás fordítani de megéri 2. devIL - egyszerű, fapad... (2010.12.08. 17:31) bmp fájlba mentés

Linkblog

bmp fájlba mentés

2010.12.02. 18:27 despina

A program a renderelt képet bmp fájltípusba fogja menteni. A fájltípus részletes leírását megtaláltam a hu.wikipedia.org/wiki/BMP oldalon. A program mindössze annyit tesz, hogy filestream segítségével kiírja a bmp headerjét majd magát a képet. 24 bites képpel dolgozom, 640*480 -as felbontásban. Kicsit összecsapott a program ezen része. Később jelentősen át kell alakítani.

// bmp.h
class c_bmp
{
public:
    void saveas(std::vector<char>& pixel);
private:
};
// bmp.cpp
int bmp_header(std::ofstream& oFile)
{
    int s = 640*480+54;
    int id;

    oFile << "BM";  //BM
    oFile.write((char*)&s,4); // file size
    oFile << "ZRay";
    id = 54;
    oFile.write((char*)&id,4);
    id = 40;
    oFile.write((char*)&id,4);
    id = 640;
    oFile.write((char*)&id,4);
    id = 480;
    oFile.write((char*)&id,4);
    id = 1;
    oFile.write((char*)&id,2);
    id = 24;
    oFile.write((char*)&id,2);
    id = 0;
    oFile.write((char*)&id,4);
    oFile.write((char*)&id,4);
    id = 2835;
    oFile.write((char*)&id,4);
    oFile.write((char*)&id,4);
    id = 0;
    oFile.write((char*)&id,4);
    oFile.write((char*)&id,4);
    
    return 0;
}
//----------------------------------------------------------------------------
int writeToFile(std::vector<char> p)
{
    time_t sec;
    sec = time(NULL);

    std::stringstream ss;
    ss << sec;
    std::string fname = "output\\"+ss.str()+".bmp";

    std::ofstream oFile(fname.c_str(), std::ios::binary);

    bmp_header(oFile);
    for (int i=0;i<640*480*3;i++)
    {
        oFile.write(&p[i],1);
    }
    oFile.close();
    return 0;
}
//----------------------------------------------------------------------------
void c_bmp::saveas(std::vector<char>& pixel)
{
    writeToFile(pixel);
}

1 komment

Címkék: bmp mentés fájlkezelés

A bejegyzés trackback címe:

https://despina.blog.hu/api/trackback/id/tr742488966

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

sirpalee 2010.12.08. 17:31:58

Ne írj saját bmp mentőt.

1. OIIO - win alá macerás fordítani de megéri
2. devIL - egyszerű, fapados de sokat ismer
3. felejtsd el a bmp-t.
süti beállítások módosítása