Witam,
piszę grę tank 1990 i mam problem z obóceniem bitmapy(czołgu) o 90 stopni na płaszczyznie wiem ze powinno to wyglądać tak:
glRotatef(90 ,0.0f ,0.0f , 1.0f);
jednak że zmieniam wartości w funkcji :
glVertex3f(abc.rx() + WIDTH_TEXTURE, abc.ry(), abc.rz()); no i przez to wszystko jest nie tak potrzebuje tak napisanej tej funkcji gdyż określam sobie w tablicy klas pozycje tekstur itd.
proszę o podanie jakiegoś możliwego rozwiązania tak abym mógł zrobić tą rotacje na podstawie danych o ile przesunołem texture.
oto kod funkcji w której wyświetlam textury, celowo podaję całą funkcję gdyż widoczne są wszystkie wywołania funkcji glTranslatef ()
z góry dziękuje za pomoc!
int DrawGLScene(GLvoid) // Here's Where We Do All The Drawing
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer
glLoadIdentity(); // Reset The View
glTranslatef(0.0f,0.0f,-5.0f);
if (masking) // Czy maskowanie jest włączone?
{
glRotatef(zrot,0.0f,0.0f,1.0f);
glBindTexture(GL_TEXTURE_2D, player_mask[abc.r_kto()]);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(abc.rx(), abc.ry(), abc.rz());
glTexCoord2f(1.0f, 0.0f); glVertex3f(abc.rx() + WIDTH_TEXTURE, abc.ry(), abc.rz());
glTexCoord2f(1.0f, 1.0f); glVertex3f(abc.rx() + WIDTH_TEXTURE, abc.ry() + HEIGHT_TEXTURE, abc.rz());
glTexCoord2f(0.0f, 1.0f); glVertex3f(abc.rx(), abc.ry() + HEIGHT_TEXTURE, abc.rz());
glEnd();
}
glRotatef(zrot++,abc.rx(),abc.ry(),1.0f) ;
glBlendFunc(GL_ONE, GL_ONE); // Copy Image 2 Color To The Screen
glBindTexture(GL_TEXTURE_2D, player_texture[abc.r_kto()]);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(abc.rx(), abc.ry(), abc.rz());
glTexCoord2f(1.0f, 0.0f); glVertex3f(abc.rx() + WIDTH_TEXTURE, abc.ry(), abc.rz());
glTexCoord2f(1.0f, 1.0f); glVertex3f(abc.rx() + WIDTH_TEXTURE, abc.ry() + HEIGHT_TEXTURE, abc.rz());
glTexCoord2f(0.0f, 1.0f); glVertex3f(abc.rx(), abc.ry() + HEIGHT_TEXTURE, abc.rz());
glEnd(); // Done Drawing The Quad
glEnable(GL_DEPTH_TEST); // Włącz test głębokości
glDisable(GL_BLEND); // Wyłącz mieszanie kolorów
return TRUE;
}