Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Wiadomości - slowbro

Strony: [1] 2 3 4 5 ... 8
1
OpenGL / Odp: [OpenGL] TV noise - animacja
« dnia: Październik 14, 2017, 01:18:36 »
@JasonVoorhees: Super sposób, bardzo prosty w realizacji i działa bardzo ładnie. W funkcji rysującej quada ze zbindowaną noisową teksturą dodałem do glTexCoord2f losowe generowanie jak poniżej:

glBegin(GL_QUADS);
glTexCoord2f(0.0 + rand()%400, 0.0 + rand()%400); glVertex3f(-15.0, -15.0, 0.0);
glTexCoord2f(0.0 + rand()%400, 1.0 + rand()%400); glVertex3f(-15.0, 15.0, 0.0);
glTexCoord2f(1.0 + rand()%400, 1.0 + rand()%400); glVertex3f(15.0, 15.0, 0.0);
glTexCoord2f(1.0 + rand()%400, 0.0 + rand()%400); glVertex3f(15.0, -15.0, 0.0);
glEnd();

Wątek do zamknięcia.

2
Szkółka / Odp: [OpenGL] Przejście pomiędzye efektami - błąd
« dnia: Październik 08, 2017, 23:28:02 »
Dzięki, sprawdzę oczywiście debuggerem:)

3
Szkółka / Odp: [OpenGL] Przejście pomiędzye efektami - błąd
« dnia: Październik 08, 2017, 22:33:13 »
Proszę bardzo:

int DrawGLScene(GLvoid)
{
int rowNumber = Music_GetPosition();

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
        ...
        tu jest dalsza część kodu





4
Szkółka / Odp: Delta time
« dnia: Październik 08, 2017, 18:32:53 »
Dzięki Sarann.

5
Szkółka / Odp: [OpenGL] Przejście pomiędzye efektami - błąd
« dnia: Październik 08, 2017, 11:12:24 »
Wartość dla zmiennej  rowNumber jest przypisywana na samym początku funkcji Draw() i działa poprawnie, ponieważ jak wstawię wywołanie whiteFlash() wewnątrz warunku rysującego figurę to błysk pojawia się tak jak ma pojawiać w rytm uderzeń perkusji:

if ((rowNumber >= 0) && (rowNumber <=127))
{             
        drawFigure1(); 

if (rowNumber % 8 == 0)
{
whiteFlash(); 
}
}

czy tu:

if ((rowNumber >= 129) && (rowNumber <=256))
{
        drawFigure2();

if (rowNumber % 8 == 0)
{
whiteFlash(); 
}
}

6
Szkółka / [OpenGL] Przejście pomiędzye efektami - błąd
« dnia: Październik 08, 2017, 02:06:40 »
Cześć

Wyłącze jeden z wątków z jednego z moich postów do całkiem nowego wątku, ponieważ gdzieś zapodział się. Eksperymentuje obecnie z synchronizacją prostych efektów z muzyką. Muzyka jest napisana w postaci modułu trackerowego. API playera muzyki zwraca wiersz patternu, co można wykorzystać do synchronizacji. W patternie jest 64 wiersze (numerowane od 0 do 63). Przejście pomiędzy jednym efektem a drugim ma odbyć się w postaci białego błysku. Kod rysujący figury w zależności od tego jaki wiersz modułu muzycznego jest grany przedstawia się następująco:

if ((rowNumber >= 0) && (rowNumber <=127))
{               
        drawFigure1(); 
}

if (rowNumber == 128)
        whiteFlash();                                                           

if ((rowNumber >= 129) && (rowNumber <=256))
{
        drawFigure2();                         
}

Gdy odgrywany jest 128 wiersz ma być biały błysk pomiędzy jednym efektem a drugim, a niestety tego białego błysku nie ma. Kod dotyczący białego błysku działa na 100% poprawnie, ponieważ jak się wywoła biały błysk w czasie trwania jakiegoś efektu to jest ładnie widoczny. Co może być przyczyną tego, że biały błysk nie jest widoczny pomiędzy jednym a drugim efektem? Oto poniżej kod odpowiedzialny za biały błysk:

void whiteFlash()
{
        glLoadIdentity();                                                                       
        glTranslatef (0.0f, 0.0f, -5.0f);

        glPolygonMode(GL_FRONT, GL_FILL);
        glPolygonMode(GL_BACK, GL_FILL);
       
        glDisable(GL_TEXTURE_2D);
        glEnable(GL_BLEND);
        glBlendFunc (GL_SRC_ALPHA, GL_ONE);     
       
        if (alpha <= 1)
        {
                glColor4f(1.0, 1.0, 1.0, alpha);

                glBegin(GL_QUADS);       
                glVertex3f(-1.0f, -1.0f, 1.0f);
                glVertex3f( 1.0f, -1.0f, 1.0f);
                glVertex3f( 1.0f, 1.0f, 1.0f);
                glVertex3f(-1.0f, 1.0f, 1.0f);
                glEnd();

                alpha += 0.025;
        }
        else
        {
                glColor4f(1.0, 1.0, 1.0, alpha_inv);

                glBegin(GL_QUADS);       
                        glVertex3f(-1.0f, -1.0f, 1.0f);
                        glVertex3f( 1.0f, -1.0f, 1.0f);
                        glVertex3f( 1.0f, 1.0f, 1.0f);
                        glVertex3f(-1.0f, 1.0f, 1.0f);
                glEnd();

                alpha_inv -= 0.025;
        }

        glDisable(GL_BLEND);
        glEnable(GL_TEXTURE_2D);       
       
        return;
}

Pozdrawiam

7
Szkółka / Odp: Delta time
« dnia: Październik 07, 2017, 21:01:45 »
@Sarann: Tak.

8
Szkółka / [OpenGL] Zmiana zgodnie z perkusją muzyki
« dnia: Październik 07, 2017, 20:59:02 »
Cześć

W demkach demoscenowych można zobaczyć efekty polegające na zmianie, która odbywa się zgodnie z rytmem uderzeń perkusji. Nie chodzi mi tu o zmianę efektu, która następuje jak jest uderzenie perkusji. Prosty przykład: na ekranie jest wyświetlany obracający się sześcian. Gdy jest uderzenie perkusji jest wyświetlany w oddaleniu, gdy jest kolejne uderzenie perkusji sześcian wyświetlany jest blisko, gdy jest kolejne uderzenie perkusji sześcian wyświetlany jest po prawej stronie ekranu, gdy jest kolejne uderzenie perkusji sześcian wyświetlany jest po prawej stronie ekranu. Ogólnie co kolejne uderzenie perkusji sześcian wyświetla jest w całkowicie innym miejscu niż poprzednio. Jakie najlepiej zastosować jest podejście, aby uzyskać taki efekt bez tworzenia dużej ilości kodu? Do głowy przyszło mi takie rozwiązanie: utworzyć sobie jakąś zmienną; gdy jest uderzenie perkusji zwiększać wartość tej zmiennej o 1. Dalej sprawdzać wartość tej zmiennej i jeżeli jest 1 to wyświetlać sześcian w jednym miejscu, gdy jest wartość zmiennej jest 2 to wyświetlać sześcian w innym miejscu ekranu itd.

Nie potrzebuje konkretnego kodu jako rozwiązania tylko nakierowania jakie rozwiązanie wybrać z punktu widzenia uniwersalności i reużycia kodu:) Zaznaczam, że nie używam shadarów tylko zwykły OpenGL. Na shadery przyjdzie wkrótce czas:)

Pozdrawiam

9
OpenGL / Odp: [OpenGL] Synchronizacja białego błysku z muzyką
« dnia: Wrzesień 17, 2017, 22:31:40 »
.

10
OpenGL / Odp: [OpenGL] Synchronizacja białego błysku z muzyką
« dnia: Wrzesień 14, 2017, 22:04:46 »
@Karol: Dzięki za wskazówkę, przydała się. Wystarczyło dać w warunku tylko sprawdzenie (rowNumber % 8 == 0) i wszystko działa poprawnie:) I wyjaśnienie do Twego pytania. Wiersze w patternie są numerowane od 0 do 63. To widzi muzyk, który tworzy muzykę w edytorze. Patternów może być więcej niż jeden. API playera zwraca jako numer wiersza kolejne liczby od 0 w górę, czyli do ostatniego wiersza ostatniego patternu:)

11
OpenGL / [OpenGL] Synchronizacja białego błysku z muzyką
« dnia: Wrzesień 14, 2017, 00:47:17 »
Cześć

Eksperymentuje obecnie z synchronizacją prostych efektów z muzyką. Muzyka jest napisana w postaci modułu trackerowego. API playera muzyki zwraca wiersz patternu, co można wykorzystać do synchronizacji. W patternie jest 64 wiersze (numerowane od 0 do 63). W związku z tym mam  dwa zagadnienia:

1. Zależy mi, aby w przypadku zwrócenia przez API, że grany jest wiersz o numerze 8, 16, 32 i tak dalej dodając 8 aż do 63 na ekranie pojawił się biały błysk. Warunek sprawdzający mam skonstruowany tak (rowNumber to numer aktualnie granego wiersza):

if (rowNumber % 8 == 0 ||
rowNumber % 8 == 2 ||
rowNumber % 8 == 3 ||
rowNumber % 8 == 4 ||
rowNumber % 8 == 5 ||
rowNumber % 8 == 6 ||
rowNumber % 8 == 7 ||
rowNumber % 8 == 8)
{
whiteFlash();
}
Można jakoś tą rozbudowaną logikę sprawdzającą w nawiasie uprościć i zastąpić bardziej czytelnym kodem? Muzyka ma paręset wierszy w pattermach i oprogramowanie synchronizacji białego błysku do tych wierszy zajmie bardzo dużo sprawdzających warunków logicznych:)

2. Przejście pomiędzy jednym efektem a drugim ma odbyć się w postaci białego błysku. Kod rysujący figury w zależności od tego jaki wiersz modułu muzycznego jest grany przedstawia się następująco:

if ((rowNumber >= 0) && (rowNumber <=127))
{
drawFigure1();
}

if (rowNumber == 128)
whiteFlash();

if ((rowNumber >= 129) && (rowNumber <=256))
{
drawFigure2();
}

Gdy odgrywany jest 128 wiersz ma być biały błysk pomiędzy jednym efektem a drugim, a niestety tego białego błysku nie ma. Kod dotyczący białego błysku działa na 100% poprawnie, ponieważ jak się wywoła biały błysk w czasie trwania jakiegoś efektu to jest ładnie widoczny. Co może być przyczyną tego, że biały błysk nie jest widoczny pomiędzy jednym a drugim efektem? Oto poniżej kod odpowiedzialny za biały błysk:

void whiteFlash()
{
glLoadIdentity();
glTranslatef (0.0f, 0.0f, -5.0f);

glPolygonMode(GL_FRONT, GL_FILL);
glPolygonMode(GL_BACK, GL_FILL);

glDisable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE);

if (alpha <= 1)
{
glColor4f(1.0, 1.0, 1.0, alpha);

glBegin(GL_QUADS);         
glVertex3f(-1.0f, -1.0f, 1.0f);
glVertex3f( 1.0f, -1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
glEnd();

alpha += 0.025;
}
else
{
glColor4f(1.0, 1.0, 1.0, alpha_inv);

glBegin(GL_QUADS);         
glVertex3f(-1.0f, -1.0f, 1.0f);
glVertex3f( 1.0f, -1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
glEnd();

alpha_inv -= 0.025;
}

glDisable(GL_BLEND);
glEnable(GL_TEXTURE_2D);

return;
}

Dziękuję z góry za odpowiedzi

12
Grafika 3D / Odp: Blender 3D - moje prace
« dnia: Wrzesień 12, 2017, 18:17:48 »
Siekierka jest fajna

13
Szkółka / Odp: Delta time
« dnia: Wrzesień 10, 2017, 18:38:59 »
Podczepię się pod ten wątek. Pasuje w sam raz. Mam wyliczoną wartość delta time. Wykorzystywana jest ona do wyliczania położenia poszczególnych wierzchołków obiektów czy cząstek w systemie cząsteczkowym. Czy wartość delta time powinna być jeszcze wykorzystywana np. w funkcjach glTranslatef, glRotatef?

14
OpenGL / Odp: [OpenGL] TV noise - animacja
« dnia: Wrzesień 09, 2017, 12:11:33 »
Dziękuję za wszystkie odpowiedzi! Podaliście fajne propozycje rozwiązań.

15
Szkółka / [OpenGL] Nauka shaderów
« dnia: Wrzesień 08, 2017, 23:56:49 »
Cześć

Z tego co widzę na sieci jest dużo różnych tutoriali dotyczących nauki shaderów. Poszukuję dobrego tutorialu (może być po polsku czy angielsku) wyjaśniającego krok po kroku shadery, coś w stylu dobrego starego kursu nehe.gemedev.net tyle że o shaderach. Możecie coś polecić na bazie własnych doświadczeń? Jakich stron unikać jak ognia?:)

Jeszcze jedna sprawa. Mam starego laptopa do kodowania. Jak można sprawdzić jaką wersję shaderów obsługuje karta graficzna?

Pozdro

Strony: [1] 2 3 4 5 ... 8