2012-11-06 7 views
6

Po prostu zaczynam uczyć się OpenGL. Wszystkie tutoriale, które widziałem, demonstrują użycie modułu cieniującego fragmentów, aby ustawić kolor wszystkich widocznych obiektów. To, czego jeszcze nie znalazłem, to w jaki sposób używałbyś cieniowanego fragmentu na jednym z obiektów, nadając różnym obiektom różne kolory. Jak to robisz?Jak zastosować moduł cieniujący fragmentu do tylko jednego obiektu w OpenGL?

Aby zapewnić odpowiednie tło, rysuję prostą scenę z domem i drogą w 2d. Odkryłem, jak ustawić kolory każdego z moich obiektów (głównego korpusu domu, okna itp.) Za pomocą ustalonej grafiki, po prostu nie rozumiem, jak ustawić kolory za pomocą cieniowania fragmentów.

Wszelkie wyjaśnienia byłyby bardzo mile widziane, w tym korekta, jeśli coś nie rozumiem.

+0

Zrób jednolity kolor i zmienić mundur przed narysować nowy obiekt z cieniującego. –

Odpowiedz

3

Aby zapewnić odpowiednie tło, rysuję prostą scenę z domem i drogą w 2d. Odkryłem, jak ustawić kolory każdego z moich obiektów (głównego korpusu domu, okna itp.) Za pomocą ustalonej grafiki, po prostu nie rozumiem, jak ustawić kolory za pomocą cieniowania fragmentów.

As RobertRouhani said, nadaj jednemu kolorowi kolor i zmień go dla każdego obiektu.


Jak zastosować shader fragment tylko jednego obiektu w OpenGL?

Możesz po prostu zmienić program cieniujący za pomocą glUseProgram i wyświetlać wywołania po użyciu innego modułu cieniującego.

Zobacz to: https://gamedev.stackexchange.com/questions/22216/using-multiple-shaders

3

Przed narysowaniem obiektu z glDrawArrays lub glDrawElements, przekaż kolor do modułu cieniującego jako zmienną.

http://www.opengl.org/sdk/docs/man/xhtml/glUniform.xml

Przykładowy fragment shaderów GLSL:

uniform vec4 u_color; 

void main(void) 
{ 
    gl_FragColor = u_color; 
} 

chciałbym rozwinąć na tej odpowiedzi, ale jestem leniwy. Mam nadzieję, że to trochę pomaga. Istnieje wiele samouczków online, wystarczy wyszukać glsl, glUniform4f, itp.

Powiązane problemy