๐Ÿš€ go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#32872
Author: slowbro
Date: Mon, 21 Feb 2005 10:40
52 lines
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
#32873
Author: muu!
Date: Tue, 22 Feb 2005 20:39
31 lines
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