Z wiki : „Interfejs API Vulkan był początkowo określany przez Khrono jako„ inicjatywa OpenGL nowej generacji ” i że jest to „ gruntowna próba przeprojektowania w celu ujednolicenia OpenGL i OpenGL ES w jednym wspólnym interfejsie API, który nie będzie wsteczny kompatybilny z istniejącymi wersjami OpenGL ”. Czy więc tym, …
Pisząc nietrywialne programy cieniujące (tak jak piszą każdy inny nietrywialny kod), ludzie popełniają błędy. [potrzebne źródło] Nie mogę jednak po prostu debugować go jak każdy inny kod - w końcu nie możesz po prostu dołączyć gdb lub debugera Visual Studio. Nie można nawet debugować printf, ponieważ nie ma żadnej formy …
Widziałem ten termin stkilka razy, gdy patrzyłem na inne shadery fragmentów OpenGL. Nie wiem jednak, co to oznacza ani do czego służy. Oto przykład: uniform vec2 u_resolution; vec2 st = gl_FragCoord.xy/u_resolution; Rozumiem, że to przekształca współrzędne pikseli w znormalizowane współrzędne 0,0 - 1,0 zamiast 640 x 480 (na przykład). Widziałem …
Dokumentacja OpenGL stwierdza, że przepustowość returns the sum of the absolute value of derivatives in x and y. Co to oznacza w kategoriach mniej matematycznych i czy można to sobie wyobrazić? W oparciu o moje rozumienie funkcji, fwidth(p)ma dostęp do wartości pw sąsiednich pikselach. Jak działa to na GPU, nie …
Mam chmurę punktów renderowaną na ekran. Każdy punkt ma swoją pozycję i kolor, a także identyfikator. Poproszono mnie o renderowanie identyfikatorów dla każdego punktu tekstury, więc utworzyłem FBO i dołączyłem dwie tekstury, jedną dla koloru, a drugą dla głębi. Stworzyłem niezbędne VAO i VBO do tego renderowania poza ekranem i …
Kilka lat temu próbowałem zaimplementować ten klejnot GPU w OpenGL do generowania terenu proceduralnego 3D za pomocą Marching Cubes . Artykuł sugeruje wdrożenie Marching Cubes w module cieniującym geometrię w celu uzyskania maksymalnej wydajności. Oznacza to, że muszę uruchomić moduł cieniujący raz dla każdego woksela w domenie, a on wygeneruje …
Po tak wielu lekturach dotyczących transformacji nadszedł czas, aby zaimplementować trackball dla mojej aplikacji. Rozumiem, że muszę utworzyć wektor od początku do miejsca kliknięcia myszy, a następnie inny od początku do miejsca zwolnienia myszy. Moje pytanie brzmi: czy muszę przekształcić współrzędne pikseli (x, y) na współrzędne świata, czy powinienem po …
Myślałem, że zrozumiałem, jak działają konwencje nazewnictwa i rozszerzenia OpenGL, dopóki nie natknąłem się na przypadek, który mnie pomieszał. Oto moje dotychczasowe zrozumienie: Bez przyrostka - np glGenBuffers(). Ta funkcja jest częścią podstawowego profilu. Strona wiki mówi mi, że został on dodany do profilu podstawowego począwszy od wersji 1.5. ARB …
Mieszanie alfa można włączyć, aby powierzchnie były przezroczyste, na przykład: glDisable(GL_DEPTH_TEST); //or glDepthMask(GL_FALSE)? depth tests break blending glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); Ale działa to tylko wtedy, gdy obiekty są renderowane w kolejności od początku do końca. W przeciwnym razie rzeczy w tle pojawią się przed bliższymi obiektami, np. Podłoga na obrazku …
W GLSL domyślna interpolacja atrybutów wierzchołków jest ustawieniem domyślnym - można ją wyłączyć dla określonych atrybutów wierzchołków za pomocą kwalifikatora noperspective . Oprócz shaderów przetwarzających post nigdy nie widziałem wyłączonej perspektywy poprawnej interpolacji - czy są jakieś inne przypadki użycia? Czy to w ogóle robi różnicę pod względem wydajności?
Mam kilka shaderów obliczeniowych, które należy wykonać w określonej kolejności i których wyniki zależą od poprzednich danych wejściowych. Idealnie, nigdy nie będę musiał kopiować bufora po stronie klienta i wykonywać całej mojej pracy na GPU. Rozważ, że mam dwa shadery obliczeniowe skompilowane i połączone jako program_onei program_two. Załóżmy, że mam …
Chciałbym załadować dowolne siatki i narysować grube czarne linie wzdłuż krawędzi, aby uzyskać efekt cieniowania. Udało mi się narysować czarną sylwetkę wokół obiektów za pomocą bufora szablonów. Możesz zobaczyć wynik tutaj: Brakuje jednak czarnych linii w samym obiekcie. Pomyślałem o sprawdzeniu normalnych nieciągłości: Sprawdzanie, czy sąsiedni piksel ma inny normalny …
Jestem dość zdezorientowany tą funkcją. Odwołanie do kontekstu GLFW brzmi następująco: Ta funkcja sprawia, że kontekst OpenGL lub OpenGL ES określonego okna jest aktualny w wątku wywołującym. Kontekst może być aktualny tylko w jednym wątku naraz, a każdy wątek może mieć jednocześnie tylko jeden bieżący kontekst. Ale niewiele mi to …
Odkryłem, że niektóre silniki używają map pochodnych zamiast normalnych map w przestrzeni stycznej . Po krótkiej lekturze wydaje się to naprawdę świetny sposób na zastąpienie stycznych normalnych przestrzeni, ale czy korzystanie z nich jest niekorzystne? Po co nadal używać normalnych przestrzeni stycznej? Czy można porównać zarówno zalety, jak i wady?
W OpenGL funkcje obiektów buforowych ( glBufferData, glBufferSubDatai prawdopodobnie kilka innych) mają parametr usageopisany w dokumentacji jako wskazówka zamierzonego użycia, która prawdopodobnie ma pomóc w poprawie wydajności implementacji. stosowanie Określa oczekiwany wzorzec użycia magazynu danych. Stała symboliczny musi być GL_STREAM_DRAW, GL_STREAM_READ, GL_STREAM_COPY, GL_STATIC_DRAW, GL_STATIC_READ, GL_STATIC_COPY, GL_DYNAMIC_DRAW, GL_DYNAMIC_READ, lub GL_DYNAMIC_COPY. [...] …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.