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

Vulkan - premiera.

0 głosów
423 wizyt
pytanie zadane 19 września 2015 w C i C++ przez emis2000 Obywatel (1,360 p.)
edycja 19 września 2015 przez emis2000
Cześć.

Myślałem nad nauką OpenGL, ale czekam na vulkana i coś się nie mogę doczekać... ma ktoś może jakieś informacje kiedy pojawią się tutoriale/kursy do Vulkana, bo z tego co wiem to jego prezentacja odbyła się w marcu?

1 odpowiedź

+1 głos
odpowiedź 19 września 2015 przez adrian17 Mentor (355,180 p.)
OpenGL nie zniknie ot tak, wręcz przeciwnie, wciąż będzie bardzo popularną platformą. Uważam że przez pierwszy rok-dwa nia ma za bardzo sensu w ogóle patrzeć na niego, przynajmniej dopóki nie powstaną biblioteki wrapujące jego bardziej niskopoziomowe zachowania.
komentarz 20 września 2015 przez emis2000 Obywatel (1,360 p.)
Ale za ok 4-5 lat chyba nikt OpenGL nie będzie używać prawda?
komentarz 20 września 2015 przez krystian904 Mądrala (6,860 p.)
na pewno ???
komentarz 20 września 2015 przez adrian17 Mentor (355,180 p.)
edycja 20 września 2015 przez adrian17

Ludzie wciąż uczą się i piszą w bezpośrednim trybie OGL1.x, który ma już 15 lat, i nic nie zapowiada że mają przestać. Dlaczego? Bo OGL3+ jest bardziej niskopoziomowy od OGL1.x, a Vulkan ma być jeszcze bardziej niskopoziomowy.

Dla porównania, tyle potrzeba żeby w OGL1.x w głównej pętli narysować trójkąt:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glBegin(GL_TRIANGLES);
    glVertex3f( 0.0f, 1.0f, 0.0f);
    glVertex3f(-1.0f,-1.0f, 0.0f);
    glVertex3f( 1.0f,-1.0f, 0.0f);
glEnd();

window.display();

A w OGL3.x tak wyglądają przygotowania:

GLuint VertexArrayID;
glGenVertexArrays(1, &VertexArrayID);
glBindVertexArray(VertexArrayID);

static const GLfloat g_vertex_buffer_data[] = {
    -1.0f, -1.0f, 0.0f,
    1.0f, -1.0f, 0.0f,
    0.0f,  1.0f, 0.0f,
};

GLuint vertexbuffer;
glGenBuffers(1, &vertexbuffer);
glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer); 
glBufferData(GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data), g_vertex_buffer_data, GL_STATIC_DRAW);

A tak samo rysowanie:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (void*)0);
 
glDrawArrays(GL_TRIANGLES, 0, 3);
 
glDisableVertexAttribArray(0);

window.display();

Przy czym pominąłem tu kompilowanie shaderów, inicjalizację GL, tekstury czy nawet kolory. W Vulkanie tego kodu będzie jeszcze kilka razy więcej.

Podobne pytania

0 głosów
0 odpowiedzi 233 wizyt
+1 głos
1 odpowiedź 561 wizyt
pytanie zadane 3 czerwca 2016 w C i C++ przez Avernis Nałogowiec (27,400 p.)
0 głosów
1 odpowiedź 1,059 wizyt
pytanie zadane 16 listopada 2022 w Systemy operacyjne, programy przez Avernis Nałogowiec (27,400 p.)

93,740 zapytań

142,675 odpowiedzi

323,294 komentarzy

63,319 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...