Jest to związane z Switch shader program in WebGL, ale chciałem ponownie zadać pytanie teraz mam jaśniejszy pomysł problemu i co chcę zapytać.Jaki stan został utracony/zresetowany po uruchomieniu programu glUseProgram?
Próbuję przełączać się między różnymi programami cieniującymi, ale nie mogę sprawić, aby rzeczy były poprawnie renderowane podczas przełączania programu cieniującego w tym samym renderowaniu. Myślę, że stan został utracony lub zresetowany po wywołaniu glUseProgram()
.
Jaki stan został utracony lub zresetowany po tym połączeniu? Innymi słowy, co jest potrzebne do ponownego wiązania po glUseProgram()
?
Dziękuję za poradę, ale szukałem bardziej ogólnej porady, na przykład, czy muszę ponownie ustawić mundury, czy też zachowują swoją wartość? Czy atrybuty lub jednolite lokalizacje zachowują swoją wartość dla jednego programu? Czy teksturowanie należy ponownie włączyć? I tak dalej. – AshleysBrain
Po połączeniu programu są zachowywane lokalizacje i rzeczywiste jednolite lokalizacje i wartości. Jednolite bufory mogą być powiązane z większą liczbą programów. Nie trzeba ponownie włączać teksturowania, ponieważ nie używasz potoków o ustalonej funkcji. – Sam
Jednostka tekstur ma wiele punktów mocowania, można na przykład powiązać tekstury 2D i 3D i uzyskać do nich dostęp za pomocą odpowiedniego samplera próbnika. – Sam