Skocz do zawartości

Adrian B.

Użytkownicy
  • Zawartość

    7
  • Rejestracja

  • Ostatnio

Reputacja

0 Neutralny

O Adrian B.

  • Ranga
    Nowy na forum
  1. Witam panowie Hm nie miałem jak was wcześniej poinformowac ale udało się mi problem rozwiązac za pomoca biblioteki którą znalazłem. Pozwala ona na prostym poruszaniu kamera we wszystkich kierunkach oraz obracanie jej. Dziekuje za udizleone odpowiedzi. Jednak mam teraz jeszcze maly problem zauwazylem ze jak naloze teksturke na blok z kanalem alfa (w tym wypadku plik .tga) to z 2 stron obiektu widac wszystko co jest za nim przez przezroczyste piksele a z drugiej strony obiektu w tym miejsciu widac jedynie czarne tlo chociaż elementy te są za nim. Wydaje się mi że tu chodzi cos o gl_cull_face jendak nie okminiam ;D proszę was o pomoc mogę też podesłac demo exe i czesc kodu jesli byscie chcieli Dziekuje za ewentualna pomoc UWAGA. Probelm rozwiazany , okazała się że wynikał on z mojego niedouczenia. Przedmioty z teksturą posiadającą kanał alfa renderuje jako ostatnie wtedy wszystkie strony działają poprawnie )
  2. Witam, Próbuje stworzyć pewną gierkę 3d za pomocą OpenGl. Zasada jaką przyjąłem to : świat nieruchomy, widok bohatera w pierwszej osobie za pomocą gluLookAt() i mam pewien problem. Oprogramowałem juz takie klawisze jak: w, s - przód / tył : if(key = ord('W')) then begin poz.x := poz.x + lx/10; poz.z := poz.z + lz/10; end; if(key = ord('S')) then begin poz.x := poz.x - lx/10; poz.z := poz.z - lz/10; end; gluLookAt(poz.x,0,poz.z,poz.x+lx,ly,poz.z+lz,0,1,0); I tutaj mam do was pytanie małe Jak oprogramować kroki w bok - klawisze a,d oraz patrzenie w górę i w dół klawisze - góra , dół bo niestety nie mam pojęcia jak to mogę rozwiązać. Dziękuję za wszelką udzieloną pomoc )
  3. Adrian B.

    [Delphi+Omega] Wydajne czy nie ?

    Myslalem o tej twojej segregacji i doszedłem do wniosku że wtedy można byłoby dzielić świat na równe sektory dla których byłyby wyliczane przy tworzeniu mapy posegregowane listy tekstur, tak aby tej czynnosci nie powtarzać w czasie działania odpowiedniej aplikacji, jednak dla 3 warstw,aby móc zrealizować ten zamiar w funkcji draw musiałbym mieć głębokość (z).
  4. Adrian B.

    [Delphi+Omega] Wydajne czy nie ?

    Czyli jak dobrze rozumiem spowolnienie wynika z tego że omil.ImageList.Items[temp.idgroup] z każdym przejściem "wymusza" odnalezienie elementu tablicy. A co jeśli do informacji o kostce zachowywał bym np wskaźnik do omil.ImageList.Items[LICZBA] i później kazał rysować poprzez właśnie ten wskaźnik ? Ps.Jesli zle Cię zrozumiałem to dlatego że nie znam sformułowania bindowania tekstury xd
  5. Adrian B.

    [Delphi+Omega] Wydajne czy nie ?

    Witam piszę silnik renderujący teren za pomocą kostek. I zastanawiam się czy rozwiązanie jakie przyjąłem jest optymalnym a w ostateczności dopuszczalnym rozwiązaniem. Zamieszczę głównie procedurę rysującą : //Ofset dla indexu początkowego offset.X := WorldPosit.X div wsize; offset.Y := WorldPosit.Y div wsize; //Offset dla położenia indexu początkowego pxoffset.X := WorldPosit.X mod wsize; pxoffset.Y := WorldPosit.Y mod wsize; //Rysowanie for x:= -1 to (ScreenSize.X div wsize) +1 do for y:= -1 to (ScreenSize.Y div wsize) +1 do if (x+offset.X >= 0) and (x < WorldSize.X ) then //dla poprawnego zakresu osi x if (y+offset.Y >= 0) and (y < WorldSize.y ) then //dla poprawnego zakresu osi y begin for i:= 0 to 2 do //dla 3 warst begin temp := @layer[i][x+offset.x][y+offset.y]; //Zbieramy info o kostce if temp.idgroup >= 0 then //jesli empty tilegrup = 0 nie renderuj if temp.animcount = 0 then // jesli nie ma animacji omil.ImageList.Items[temp.idgroup].Draw(x*wsize-pxoffset.X,y*wsize-pxoffset.Y,temp.rot,0.5,0.5,1,1,OmegaColor(temp.r,temp.g,temp.b,temp.a),temp.hm,temp.vm,temp.idtile) else begin //Jesli jest animacja temp.entime := temp.entime + elipsedtime; if temp.entime > temp.timecount then //Jesli nastepuje zmiana animacji kratki begin temp.entime := 0; inc(temp.animpos); if temp.animpos > temp.animcount then //Jesli przekroczymy zakres temp.animpos := 0; end; omil.ImageList.Items[temp.idgroup].Draw(x*wsize-pxoffset.X,y*wsize-pxoffset.Y,temp.rot,0.5,0.5,1,1,OmegaColor(temp.r,temp.g,temp.b,temp.a),temp.hm,temp.vm,temp.idtile+temp.animpos); end; end; end; Zakładając że : wsize - rozmiar kostki WordPosit (TPoint) - pozycja przesuniecia mapy (w pikselach) Czy jesteście w stanie mi coś poradzić aby przyśpieszyć nieco sam proces jeszcze ? Czy może pozostawić tak jak jest ?
  6. Adrian B.

    [Delphi] Malowanie przeźroczyste po canvasie :P

    ad(1) : Pixel po pixelu zawsze działa zbyt powoli Hm "pod Sevenem". Uzywam Delphi 7 na Windows 7 ^^ a więc sevenowo i u mnie działa wszystko należycie. Ps. Można zrobić też tak .. Zgarniasz całą bitmapkę reprezentującą Formularz kopiujesz ją do twojego canvasa i po nim rysujesz
  7. Adrian B.

    [Delphi] Malowanie przeźroczyste po canvasie :P

    Zamaluj tło kolorem,który znajduję się pod obrazkiem w wyniku czego będziesz miał efekt przeźroczystości lub zacznij manipulować TransparentColor'em
×