SDL/OpenGL - změna barev při texturování – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

SDL/OpenGL - změna barev při texturování – C / C++ – Fórum – Programujte.comSDL/OpenGL - změna barev při texturování – C / C++ – Fórum – Programujte.com

 

frantta0
Duch
3. 12. 2009   #1
-
0
-

Při načtení textury se mě změní barvy původních oběktů (bez textur) ve scéně. Barvy ztmavnou, modrá zčerná... (Světla nemám povolená, tam chyba nebude...)
čím to může být?
Děkuji

Nahlásit jako SPAM
IP: 195.178.65.–
Wizard0
Stálý člen
3. 12. 2009   #2
-
0
-

Mozno by pomohol nejaky ten kusok kodu ...

Nahlásit jako SPAM
IP: 85.216.193.–
frantta0
Duch
3. 12. 2009   #3
-
0
-

void Draw()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
//glCullFace(GL_BACK);
//glEnable(GL_CULL_FACE);

keys=SDL_GetKeyState(NULL);

if (keys[SDLK_UP])
{ xpos-=ryc*sin(uhel*DEG_TO_RAD);
zpos-=ryc*cos(uhel*DEG_TO_RAD);}

if (keys[SDLK_DOWN])
{ xpos+=ryc*sin(uhel*DEG_TO_RAD);
zpos+=ryc*cos(uhel*DEG_TO_RAD);}

if (keys[SDLK_RIGHT]&&(keys[SDLK_UP]||keys[SDLK_DOWN]))
uhel-=(keys[SDLK_DOWN]?-polo:polo);

if (keys[SDLK_LEFT]&&(keys[SDLK_UP]||keys[SDLK_DOWN]))
uhel+=(keys[SDLK_DOWN]?-polo:polo);

if (uhel>360) uhel-=360;

strom(2.0f,-1.0f);
strom(-4.0f,-5.0f);
strom(-1.0f,-16.0f);
strom(1.0f,-20.0f);
strom(-7.0f,-40.0f);
strom(-3.0f,-29.0f);

glLoadIdentity();
glTranslatef(0.0f,-1.001f,-5.0f);
glRotatef(360-uhel,0.0f,1.0f,0.0f);
glTranslatef(-xpos,0.0f,-zpos);

glBegin(GL_QUADS);
glColor3f(1.0f,1.0f,1.0f);
glTexCoord2i(0,0);
glVertex3f(-12.8f, 0.0f, 0.0f);
glTexCoord2i(1,0);
glVertex3f( 10.0f, 0.0f, 0.0f);
glTexCoord2i(1,1);
glVertex3f( 10.0f, 0.0f,-25.6f);
glTexCoord2i(0,1);
glVertex3f(-12.8f, 0.0f,-25.6f);
glEnd();



glLoadIdentity();
glTranslatef(0.0f,-1.0f,-5.0f);

glBegin(GL_QUADS);
glColor3f(0.2f,0.2f,1.0f);
glVertex3f(-0.4f, 0.2f, 0.0f);
glColor3f(0.0f,0.0f,0.4f);
glVertex3f(-0.4f, 0.0f, 0.0f);
glVertex3f( 0.0f, 0.0f,-2.0f);
glColor3f(0.2f,0.2f,1.0f);
glVertex3f( 0.0f, 0.2f,-2.0f);

glVertex3f( 0.0f, 0.2f,-2.0f);
glColor3f(0.0f,0.0f,0.4f);
glVertex3f( 0.0f, 0.0f,-2.0f);
glVertex3f( 0.4f, 0.0f, 0.0f);
glColor3f(0.2f,0.2f,1.0f);
glVertex3f( 0.4f, 0.2f, 0.0f);
glEnd();
glBegin(GL_TRIANGLES);
glColor3f(0.0f,0.0f,0.4f);
glVertex3f( 0.0f,0.0f,-2.0f);
glVertex3f(-0.4f,0.0f, 0.0f);
glVertex3f( 0.4f,0.0f, 0.0f);
glEnd();

glFlush();
SDL_GL_SwapBuffers();
}





void loadTexture()
{
if ( (surface = SDL_LoadBMP("map.bmp")) )
{
// Have OpenGL generate a texture object handle for us
glGenTextures(1, &texture);

// Bind the texture object
glBindTexture(GL_TEXTURE_2D, texture);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);


glTexImage2D( GL_TEXTURE_2D, 0, 3, 256, 256, 0, GL_BGR, GL_UNSIGNED_BYTE, surface->pixels);
}
else
{
printf("SDL could not load texture %s\n", SDL_GetError());
SDL_Quit();
}

if (surface) SDL_FreeSurface(surface);
}



Nahlásit jako SPAM
IP: 195.178.65.–
Wizard0
Stálý člen
3. 12. 2009   #4
-
0
-

No je to uz nejaka doba co som videl OGL naposledy, ale ked si dobre spominam tak, ked chces pouzit texturu tak o tom musis dat OGLku vediet funkciou glBindTexture, ty ju sice volas ale hned pri nahrani textury to znamena, ze sa snazi namapovat na vsetky objekty a kedze nie vsade urcujes ako sa ma mapovat (funckia glTexCoord) tak to potom moze sposobyt nieco take. Cize bind daj aj pred vykreslenim objektu na, ktory chces texturu vykreslit a predtym ako zacnes vykreslovat objekt bez textury musis bindnut defaultnu texturu (predanim NULL namiesto idcka textury).

Nahlásit jako SPAM
IP: 85.216.193.–
frantta0
Duch
3. 12. 2009   #5
-
0
-

Děkuji!!! Problém vyřešen

Nahlásit jako SPAM
IP: 195.178.65.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 33 hostů

Moderátoři diskuze

 

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