• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

OpenGL - tworzenie trójkątów w pętli

Cloud VPS
0 głosów
478 wizyt
pytanie zadane 11 kwietnia 2022 w OpenGL, Unity przez letmestay Użytkownik (520 p.)
Mam na zadanie stworzenie takiej ala szachownicy, którą mam zbudować z trójkątów. Mogłabym je oczywiście wpisać na sztywno (udaje mi się przy użyciu glDrawElements i zadeklarowanych indices), ale prowadzący chciał, żeby to się robiło samo. Mam wrażenie, że przegrzebałam już za tym pół internetu i dalej nie wiem jak nawet do tego podejść właśnie wykorzystując te indices. Czy jest jakaś strona albo jakieś źródło, które pozwoli mi zrozumieć jak rysować takie trójkąty w pętli?

2 odpowiedzi

+1 głos
odpowiedź 11 kwietnia 2022 przez adrian17 Mentor (354,120 p.)
edycja 11 kwietnia 2022 przez adrian17
Trudno powiedzieć, co autor (prowadzący) ma na myśli.

Wyobrażam sobie że albo mu chodzi o:

- cztery wierzchołki (na dwa trójkąty) i narysowanie ich przez glDrawElements() 81 razy z różnymi macierzami transformacji w shaderach

- raczej nie, ale... cztery wierzchołki i jeden glDrawElementsInstanced() rysujący na raz 81 instancji? (z 81 macierzami w jednej tablicy przekazanej do shadera)

- 9x9 wierzchołków i narysowanie ich jednym (dwoma, zależnie jak dwa kolory obsługujesz) glDrawElements()?

Albo coś innego... :/
+1 głos
odpowiedź 12 kwietnia 2022 przez Bondrusiek Maniak (61,440 p.)

Hej,

mozesz wykorzystac zwyczajna petle for/while. Zbindowac sie w glownej petli z VAO i zaczac rysowac. 

Cos w tym typie(tylko musisz zaprojektowac pozycje dla pol) dla GLFW:

  // render loop
    // -----------
while (!glfwWindowShouldClose(window))
{
       ....
        // render boxes
        glBindVertexArray(VAO);
        for (unsigned int i = 0; i < 10; i++)
        {
            // calculate the model matrix for each object and pass it to shader before drawing
            glm::mat4 model = glm::mat4(1.0f);
            model = glm::translate(model, cubePositions[i]);
            float angle = 20.0f * i;
            model = glm::rotate(model, glm::radians(angle), glm::vec3(1.0f, 0.3f, 0.5f));
            ourShader.setMat4("model", model);

            glDrawArrays(GL_TRIANGLES, 0, 36);
        }
...
}

Caly tutorial:

https://learnopengl.com/Getting-started/Coordinate-Systems

Podobne pytania

0 głosów
1 odpowiedź 411 wizyt
pytanie zadane 22 kwietnia 2023 w Matematyka, fizyka, logika przez HUBSON2912 Obywatel (1,480 p.)
0 głosów
2 odpowiedzi 330 wizyt
0 głosów
0 odpowiedzi 388 wizyt
pytanie zadane 25 kwietnia 2023 w OpenGL, Unity przez RufinB Bywalec (2,020 p.)

93,454 zapytań

142,448 odpowiedzi

322,717 komentarzy

62,832 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...