dokumentacja opengl 1.1 poszukiwana

0

Potrzebuję solidnego opisu nowych funkcji zawartych w opengle 1.1, czyli tych przeróżnych gl...Array.

0

Co to jest opengle? OpenGL czy OpenGL ES? To nie to samo.
OpenGL ES 1.1 to mocno okrojony OpenGL 1.5 przeznaczony dla urządzeń “embedded” (czytaj: smartfony).

Jeśli chodziło ci o OpenGL 1.1 to

https://www.khronos.org/registry/OpenGL/index_gl.php

Tylko z jakiegoś powodu akurat 1.1 jest w formacie .ps, a wszystkie pozostałe w .pdf. Jeśli to jest problemem to masz 1.2.1 najbliższą wyższą.

a jeśli ci chodziło o OpenGL ES 1.1 to

https://www.khronos.org/registry/OpenGL/index_es.php

Jest też wszystko na GitHubie https://github.com/KhronosGroup/OpenGL-Registry
(szukaj w katalogu specs)

0

W paczce z Microsoft Windows SDK była dokumentacja OpenGL 1.1
Download -> http://www.carabez.com/downloads/win32api_big.zip

0

Nie chce mi się patrzeć, ale to pewnie to samo co tutaj: https://msdn.microsoft.com/en-us/library/dd374278%28v=vs.85%29.aspx

0

Download -> http://www.carabez.com/downloads/win32api_big.zip

Tylko jest z tym mały problem, że to nie działa.
Wywala błąd przy otwarciu, podając ścieżkę do pliku który nie istnieje.
To jest lokalna kopia, ale najwyraźniej źle zrobiona.

0

http://www.cse.chalmers.se/edu/course/TDA361/redbook.pdf

tylko że to jest cały gl, a mnie interesują tylko same rozszerzenia w 1.1

0

Obawiam się że gotowca nie znajdziesz, bo to dość nietypowe pytanie co jest „nowego” w OpenGL 1.1.

Ale możesz ściągnąć sobie specyfikacje 1.0 i 1.1 ze strony którą podałem i porównać. Plik .ps przerobisz na .pdf tutaj.
Krótkie podsumowanie zmian masz pod koniec dokumentu. Jest tam też indeks, za pomocą którego łatwo znajdziesz nowe funkcje porównując oba dokumenty.

A jeśli chodzi ci po prostu o konkretne funkcje (owe „przeróżne gl...Array”) to szukaj informacji na ich temat.
I w ogóle polecam przejrzenie specyfikacji.

0

A jeśli chodzi ci po prostu o konkretne funkcje (owe „przeróżne gl...Array”) to szukaj informacji na ich temat.

Wszelkie dostępne opisy są skrajne zdawkowe, praktycznie bezwartościowe, np.:

https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glDrawArrays.xml
https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glArrayElement.xml

podobnie tu:
https://msdn.microsoft.com/pl-pl/library/windows/desktop/dd318837(v=vs.85).aspx

na podstawie takich nibydokumentacji nie sposób cokolwiek zaprogramować.

0

Opisy są dobre. Nie ma też dokładniejszej dokumentacji niż specyfikacja. Ale widzę że nie chcesz zadać sobie trudu.

0
Azarien napisał(a):

Opisy są dobre. Nie ma też dokładniejszej dokumentacji niż specyfikacja. Ale widzę że nie chcesz zadać sobie trudu.

Opis nowych funkcji - rozszerzeń powinien być pełny i całościowy.
Opis prototypu to żadna dokumentacja.

Te oposy są praktycznie równoważne z tym:
bleble(a, b, c);
gdzie: bleble to funkcja, natomiast: a,b,c to jej parametry.

0

A może te gl..Arrays z 1.1 są zastąpione czymś bardziej sensownym w wyższych wersjach?

0
walicja napisał(a):

Opis nowych funkcji - rozszerzeń powinien być pełny i całościowy.

Pełny, całościowy opis jest w specyfikacji, glspec121.pdf rozdział 2.8 Vertex Arrays strona papierowa 21 strona PDF-a 33.

Idea jest taka, że dane wierzchołków trzymasz w tablicach.

        float vertices[][3] = {
                                 {-0.5, 0.5, 0.5}, {-0.5, -0.5, 0.5}, {0.5, -0.5, 0.5}, {0.5, 0.5, 0.5}, // front
                                 {-0.5, 0.5, -0.5}, {-0.5, -0.5, -0.5}, {-0.5, -0.5, 0.5}, {-0.5, 0.5, 0.5}, // left
                                 {0.5, 0.5, -0.5}, {0.5, -0.5, -0.5}, {-0.5, -0.5, -0.5}, {-0.5, 0.5, -0.5}, // back
                                 {0.5, 0.5, 0.5}, {0.5, -0.5, 0.5}, {0.5, -0.5, -0.5}, {0.5, 0.5, -0.5}, // right
                              };
        float texcoords[][2] = {{0, 1}, {0, 0}, {1, 0}, {1, 1},
                                {0, 1}, {0, 0}, {1, 0}, {1, 1},
                                {0, 1}, {0, 0}, {1, 0}, {1, 1},
                                {0, 1}, {0, 0}, {1, 0}, {1, 1},
                                {0, 1}, {0, 0}, {1, 0}, {1, 1},
                                {0, 1}, {0, 0}, {1, 0}, {1, 1}};

Następnie za pomocą glEnableClientState ustawiasz których tablic będziesz używać

        glEnableClientState(GL_VERTEX_ARRAY);
        glEnableClientState(GL_TEXTURE_COORD_ARRAY);

a za pomocą gl***Pointer podajesz wskaźniki do tablic

        glVertexPointer(3, GL_FLOAT, 0, vertices);
        glTexCoordPointer(2, GL_FLOAT, 0, texcoords);

rysujesz glDrawArrays

        glDrawArrays(GL_QUADS, 0, 4 * 4);

która to funkcja pobiera kolejne wierzchołki z włączonych tablic. Na końcu tablice wyłączasz, bo zostają włączone tak długo aż ich nie wyłączysz.

        glDisableClientState(GL_VERTEX_ARRAY);
        glDisableClientState(GL_TEXTURE_COORD_ARRAY);
0

Bardzo dobre wprowadzenie. Już chyba prawie rozumiem!

Dodatkowe pytania:

  1. jak narysować w tej wersji 6 różnych obrazków, np. fotografii, po każdym na jednej ścianie tego sześcianu.
  2. czy wolno modyfikować te tablice: wierzchołki, normalne, tekstury, itd.,
    bez ponownego ładowania, wyłączania - tych clientState?

Mam na myśli np. animację, w której zmieniam sobie np. trzy z tych ośmiu wierzchołków, aby uzyskać jakieś tam deformacje bryły in fly.

0

jak narysować w tej wersji 6 różnych obrazków, np. fotografii, po każdym na jednej ścianie tego sześcianu.

a) utworzyć teksturę (tzw. atlas) na której będzie sześć obrazków obok siebie i odpowiednio manipulować koordynatami tekstury, tak by wycinało odpowiedni fragment. Trzeba przy tym pamiętać że starsze karty graficzne wymagają by tekstury miały wymiary będące potęgą dwójki (choć niekoniecznie muszą być kwadratowe)

b) podzielić kostkę na sześć osobnych obiektów (6 osobnych wywołań glDrawArrays) i zmieniać teksturę. tablice mogą nawet pozostać dokładnie te same, a manipulować można transformacją (glRotate/glTranslate)

czy wolno modyfikować te tablice: wierzchołki, normalne, tekstury, itd., bez ponownego ładowania, wyłączania - tych clientState?

Można modyfikować.

Mam na myśli np. animację, w której zmieniam sobie np. trzy z tych ośmiu wierzchołków, aby uzyskać jakieś tam deformacje bryły in fly.

Naturalnie zmiana wartości w tablicy nie zmieni magicznie zawartości ekranu. Trzeba sobie następną klatkę narysować na nowo. Nie trzeba podawać na nowo wskaźników (glVertexPointer, glTexCoordPointer), ani włączać i wyłączać tablic, ale są istotne powody by tak robić. Gdy będziesz mieć więcej obiektów do narysowania stanie się to wręcz konieczne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1