Thread View: pl.comp.demoscena
2 messages
2 total messages
Started by slowbro
Mon, 21 Feb 2005 10:40
[opengl] przesuwanie obiektu wzdluz osi Z z glebi ekranu w kierunku patrzacego
Author: slowbro
Date: Mon, 21 Feb 2005 10:40
Date: Mon, 21 Feb 2005 10:40
52 lines
3034 bytes
3034 bytes
czesc,
mam ustawiony widok na glTranslatef (0.0f, 0.0f, -3.0f). napisalem funkcje ktora
przesuwa teksturowany kwadrat z glebi ekranu w strone widza. wykorzystuje do
tego petle for:
for (g_iPicPolysLoop = 0; g_iPicPolysLoop < 1; g_iPicPolysLoop++)
{
float z = PicPolys[g_iPicPolysLoop].fZPos; // przechwutyjemy
polozenie na osi Z
glBlendFunc (GL_SRC_ALPHA, GL_ONE);
glColor4f (0.5f, 0.5f, 0.5f, 1.0f); // ustawiamy kolory przenikania
glEnable (GL_BLEND); // wlaczmy przenikanie
glDisable (GL_DEPTH_TEST); // wylaczmy testowanie glebokosci
glEnable (GL_TEXTURE_2D);
glBindTexture (GL_TEXTURE_2D, g_iTextures[1]); // nakladamy teksture
glTranslatef (1, 0, PicPolys[g_iPicPolysLoop].fZPos);
glBegin (GL_QUADS); // zaczynamy rysowac kwadrat
glColor3f(1.0f, 1.0f, 1.0f); // ustalamy kolor na bialy
glTexCoord2f (0.0f, 1.0f);glVertex3f(-1.0f, 1.0f, 1.0f); // lewy gorny
rog figury
glTexCoord2f (1.0f, 1.0f);glVertex3f( 1.0f, 1.0f, 1.0f); // prawy gorny
rog figury
glTexCoord2f (1.0f, 0.0f);glVertex3f( 1.0f,-1.0f, 1.0f); // prawy dolny
rog figury
glTexCoord2f (0.0f, 0.0f);glVertex3f(-1.0f,-1.0f, 1.0f); // lewy dolny
rog figury
glEnd(); // konczymy rysowanie kwadratu
glEnable (GL_DEPTH_TEST); // wlaczmy testowanie bufora
glebokosci
glDisable (GL_BLEND); // wylaczmy przenikanie
PicPolys[g_iPicPolysLoop].fZPos = PicPolys[g_iPicPolysLoop].fZPos + 0.005;
}
daze do tego aby obrazek przesuwal sie z glebi ekranu w strone widza i
zatrzymywal sie przed jego oczami.probowalem z petla while, ale program zawiesza
sie:((( nie mam duzego doswiadczenia, ktore pozwoliloby mi na uzyskanie
pozadanego przeze mnie efektu. prosze o uwagi i sugestie, co nalezy poprawic w
programie...
milego dnia
dzieki
--
Wysลano z serwisu OnetNiusy: http://niusy.onet.pl
Re: [opengl] przesuwanie obiektu wzdluz osi Z z glebi ekranu w kierunku patrzacego
Author: muu!
Date: Tue, 22 Feb 2005 20:39
Date: Tue, 22 Feb 2005 20:39
31 lines
2022 bytes
2022 bytes
Czesc,
<ciach>
Po pierwsze powinienes troche poczytac funkcjach typu callback.
W skrocie dziala to tak, ze masz jakas funkcje odpowiedzialna za rysowanie
_kolejnej_ klatki (a nie _wszystkich
klatek po kolei). Zaleznie od tego, z czego korzystasz np. GLUT, sam
inicjalizujesz okienko czy jakis framework typu glfw
ustalasz w jakis, ze powiedzmy funkcja render() bedzie wolana w petli
programu 'co klatke'.
A wiec piszac swoj program powinienes zrobic cos w rodzaju tego:
render() // Twoja funkcja renderujaca
{
static klatka=0;
rysuj(klatka); // tutaj np. glTranslatef(0,0, klata*0.1f); i rysowanie
klatka++;
}
Oczywiscie taki sposob nie jest najlepszy, bo w zaleznosc od predkosci
kompa/karty/wielkosci okienka
bedzie to chodzilo z rozna predkoscia. Dlatego powinienes uzaleznic to
przesuniecie od timera.
Wiecej o timerach, callbackach itp. znajdziesz na http://nehe.gamedev.net
No i baaardzo polecam cos o nazwie glfw (znajdz sobie na google). Cos jak
GLUT, ale 10x wygodniejsze :)
mu!
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads