Jest to głównie pytanie dotyczące dokumentacji. Mam nadzieję, że jest to właściwe miejsce, aby zapytać, a nie na przykład programistów lub stackoverflow.
Nie przeczytałem specyfikacji OpenGL, ale z książek (Red Book) i różnych samouczków nie mogę właściwie zrozumieć, w jaki sposób różne obiekty i części interfejsu API oddziałują na siebie i odnoszą się do siebie.
Na przykład wiem, że jeśli VAO jest związane, wówczas powiązanie VBO i ustawienie atrybutu spowoduje, że VBO zostanie powiązane z VAO.
Ale istnieje wiele obiektów, ich relacje mogą się różnić. Na przykład VAO jest całkowicie niezwiązany z bieżącym programem cieniowania, ale wynik operacji rysowania może zależeć od obu z nich.
Wśród wszystkich różnych komponentów OpenGL widzę pewne relacje, takie jak A-binds-to-B lub A-and-B-are-by-by-by-C. Wszystkie te relacje są zbieżne w określaniu, jak można zmienić stan kontekstu, jak można zmieniać rzeczy, jak razem je zapisywać i optymalizować.
Szukam zasobów wyjaśniających tylko te relacje. Podobnie jak diagram UML, wykres, a nawet dokument tekstowy, który nie koncentruje się na wywołaniach, ale opisuje w zwięzły sposób, w jaki sposób różne komponenty OpenGL oddziałują na siebie i wiążą się ze sobą.
Czy wiesz, gdzie znaleźć taki zasób?
źródło
glVertexAttribPointer()
. Schemat dla obiektów OpenGL byłby dość płytki i prosty, w rzeczywistości nie ma więcej niż garść różnych obiektów w OpenGL. VAO używają buforów dla atrybutów. Tekstury buforów są wspierane przez bufory. Bufory ramki mają załączniki tekstur. Polecenia do rysowania używają bieżącego VAO, bieżącego programu, bieżącego bufora ramek, bieżących ustawień próbnika oraz bieżącego bufora indeksu / bufora pośredniego. Prawdopodobnie sam możesz narysować schemat.;)
(cały API to jeden wielki bałagan danych globalnych)Odpowiedzi:
Próbowałem więc namalować własny schemat. Nie jest to wyczerpujące, głównie dlatego, że nie jestem teraz zainteresowany niektórymi rzeczami, ale także dlatego, że chciałem, aby był czytelny (nawet jeśli nie jest to formalnie określony wykres, myślę, że powinien być łatwy do odczytania).
Ponadto, ponieważ wydaje się być interesujące dla niektórych osób, chcę je tutaj udostępnić, aby uzyskać informacje zwrotne i sprawdzić. Użyłem wiki OpenGL jako odniesienia do sprawdzenia poprawności, ale mogłem wprowadzić błędy.
Ponadto, jeśli podane informacje nie są dla Ciebie wystarczające lub pominąłem ważne relacje, które warto uwzględnić na schemacie, możesz je zasugerować, a ja postaram się je aktualizować.
Ponownie zachęcamy do zgłaszania błędów, problemów lub sugestii, są one mile widziane.
EDYTOWAĆ
źródło