Dobrý večer,
tak jsem zas tu. Po celém dni, kdy jsem se opět zkoušel prokousat OpenGL a načítáním BMP textur jsem došel až do bodu. Kdy texturu načtu z externího BMP souboru, ale:
1)místo aby se pak zobrazila jako standardní RGB. Se zobrazují barvy červená a modrá prohozené, resp.: podle modelu BRG.
2) v levém dolním rohu textury chybí cca 20 pixelů v jedom řádku (textura má být zcela jistě v techto místech pouze červená). Zkoušel jsem alokovat více místa, bez reakce, myslím si tedy, že nedostatkem místa v proměnné chyba nevzniká.
Přikládám tedy celý projekt. Včetkě BMP, zdrojových kódu,atd.
Jedná se o tuto část kódu:
int width_t, height_t;
width_t=256;
height_t=256;
FILE *fin;
char *prom;
fin=fopen("zk.bmp", "r");
prom=(char*)malloc(width_t*height_t*3);
cout << fread(prom, width_t*height_t*3,sizeof(unsigned char), fin) << endl;
cout << pes << endl;
glPixelStorei(GL_UNPACK_ALIGNMENT, 1); // zpusob ulozeni bytu v texture
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); // opakovani textury
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); // volba filtru
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, // nahrani rastrovych dat do textury
height_t, height_t,
0, GL_RGB, GL_UNSIGNED_BYTE, prom);
glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST);// vylepseni zobrazovani
glEnable(GL_TEXTURE_2D);
K prvnímu problému: Četl jsem, že by se problém RGB a BGR dal vyřešit přepsáním:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB,
height_t, height_t,
0, GL_BGR, GL_UNSIGNED_BYTE, prom);
POložky GL_RGB na GL_BRG. Dokonce i v dokumentaci k této funkci je tato možnost i tyto hodnoty přípustné. Když je to ovšem udělám, kompilátor vyhodí chybu [quote] 75 C:\Users\Lokutus7323\Documents\Projekty v C++\OpenGL\main.cpp `GL_BGR' was not declared in this scope[/quote]
Děkuji