• 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

0 głosów
68 wizyt
pytanie zadane 11 kwietnia w OpenGL, Unity przez letmestay Początkujący (310 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 przez adrian17 Ekspert (322,420 p.)
edycja 11 kwietnia 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 przez Bondrusiek Maniak (61,170 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
2 odpowiedzi 160 wizyt
0 głosów
1 odpowiedź 50 wizyt
pytanie zadane 11 maja w OpenGL, Unity przez letmestay Początkujący (310 p.)
0 głosów
0 odpowiedzi 68 wizyt
pytanie zadane 10 sierpnia 2020 w OpenGL, Unity przez tonn204 Mądrala (7,120 p.)

88,701 zapytań

137,308 odpowiedzi

306,748 komentarzy

58,894 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...