Anonymní profil Bufo – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Bufo – Programujte.comAnonymní profil Bufo – Programujte.com

 

Příspěvky odeslané z IP adresy 147.251.216.–

Bufo
C / C++ › opengl - změna velikosti pix…
12. 1. 2010   #122611

tak sem to našel.. špatně umístěnej příkaz glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

Bufo
C / C++ › opengl - změna velikosti pix…
12. 1. 2010   #122610

hmmm.. udělal jsem si stejnou aplikaci ve win api a funguje to.. ale tohle dělám jako klientský okno v ATL a nejde to.. zkusim najít důvod

Bufo
C / C++ › opengl - změna velikosti pix…
12. 1. 2010   #122607

To Wizard :
ne, to je muj překlep.. ta druhý volání funkce drawPixmap(pixIFS); je tam navíc..
zkoušel sem upravit destroy na:
void OpenGL::destroyPixmap(pixmap** p)
{
pixmap* map = *p;
if (map->pixels) {
//MessageBox(_T(""), _T(""), NULL);
delete[] map->pixels; // uvolnit vlastni pixmapu
}
if (map) {
delete map; // i okolni strukturu
}
*p = NULL;
}
ale nepomaha to.

Bufo
C / C++ › opengl - změna velikosti pix…
12. 1. 2010   #122592

první příspěvek ignorujte ;).. takže

mám funkce:

Citovat:

//-----------------------------------------------------------------------------
// Funkce pro vytvoreni pixmapy o zadane velikosti
//-----------------------------------------------------------------------------
pixmap * OpenGL::createPixmap(const unsigned int width, const unsigned int height)
{
pixmap *p = new pixmap;
if (!p) return NULL;
p->width=width; // naplneni struktury
p->height=height;
p->pixels = new unsigned char [3*width*height];
if (!p->pixels) { // alokace pole pro pixely
delete p; // alokace se nepovedla
return NULL;
}
else {
memset(p->pixels, 0, 3*width*height); // smazani pixmapy
}

return p;
}



//-----------------------------------------------------------------------------
// Funkce pro zruseni pixmapy
//-----------------------------------------------------------------------------
void OpenGL::destroyPixmap(pixmap *p)
{
if (p->pixels) {
delete[] p->pixels; // uvolnit vlastni pixmapu
}
if (p) {
delete p; // i okolni strukturu
}
p = NULL;
}

//-----------------------------------------------------------------------------
// Funkce pro vykresleni pixmapy do barvoveho bufferu
//-----------------------------------------------------------------------------
void OpenGL::drawPixmap(const pixmap *p)
{
if (!p || !p->pixels) return;
glDrawPixels( // vykresleni pixmapy
p->width, p->height, // sirka a vyska pixmapy
GL_RGB, // format dat pixelu
GL_UNSIGNED_BYTE, // datovy typ kazde barevne slozky
p->pixels); // ukazatel na pamet s barvami pixelu
}



při překreslení zavolám:

Citovat:

...
pixIFS=createPixmap(width, height); // velikost okna
drawPixmap(pixIFS); // vykresleni pixmapy
destroyPixmap(pixIFS);
drawPixmap(pixIFS);

...



ale při změně velikosti okna zde aplikace spadne a nevím proč confused smiley.. tušíte někdo? přitom když zadám za sebou zobrazení dvou pixel map takto:

Citovat:

...
pixIFS=createPixmap(410, 504); // libovolna velikost
drawPixmap(pixIFS); // vykresleni pixmapy
destroyPixmap(pixIFS);
drawPixmap(pixIFS);

pixIFS=createPixmap(200, 15); // libovolna velikost
drawPixmap(pixIFS); // vykresleni pixmapy
destroyPixmap(pixIFS);
drawPixmap(pixIFS);

...



tak zobrazení funguje..

Bufo
C / C++ › opengl - změna velikosti pix…
12. 1. 2010   #122591



...
pixIFS=createPixmap(410, 504); // libovolna velikost
drawPixmap(pixIFS); // vykresleni pixmapy
destroyPixmap(pixIFS);
drawPixmap(pixIFS);

pixIFS=createPixmap(200, 15); // libovolna velikost
drawPixmap(pixIFS); // vykresleni pixmapy
destroyPixmap(pixIFS);
drawPixmap(pixIFS);

...



tak zobrazení funguje..

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý