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

question-closed C++/OpenGL. Problemy z teksturowaniem obiektów.

Object Storage Arubacloud
0 głosów
166 wizyt
pytanie zadane 12 października 2019 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)
zamknięte 12 października 2019 przez Jakub 0

Witam, korzystam z tego poradnika: https://learnopengl.com/Getting-started/Textures

Mam problem z teksturowaniem obiektów, dla niektórych tekstur wszystko wygląda dobrze:

a dla niektórych dzieje się coś takiego:

nie mogę znaleźć żadnych cech wspólnych pomiędzy tymi obrazkami dla których teksturowanie powiodło się lub nie. Mój kod jest praktycznie identyczny do tego co w poradniku. Mimo wszystko daje linka do repozytorium: https://github.com/Jakub1010/OpenGL-textures

Coś czułem że z teksturami będą problemy ;)

Bardzo dziękuje za pomoc i serdecznie pozdrawiam.

komentarz zamknięcia: problem rozwiązany.

2 odpowiedzi

0 głosów
odpowiedź 12 października 2019 przez j23 Mędrzec (194,920 p.)

Nie znam się, ale się wypowiem ;)

Spróbuj tak:

unsigned char* data = stbi_load("textures/wood.jpg", &width, &height, &nrChannels, 3);

 

 

komentarz 12 października 2019 przez Jakub 0 Pasjonat (23,120 p.)
nic :(
komentarz 12 października 2019 przez criss Mędrzec (172,590 p.)
Sprawdź jeszcze zawartość `data`. Jeśli każde 3 wartości są takie same (tj. efektywnie grayscale zakodowany niepotrzebnie na 3 kanałach), to z jakiegoś powodu stbi coś popsuł i wynikowy obaz jest ok (zgadza sie z zawartoscia tekstury).

Możesz jeszcze zmienić internalformat (3 param glTexImage2D() ) na GL_RGB8. Jeśli to też nie działa, to nie mam pojęcia i obwiniałbym stbi...
komentarz 12 października 2019 przez Jakub 0 Pasjonat (23,120 p.)
edycja 12 października 2019 przez Jakub 0
Użyłem:

glPixelStorei(GL_UNPACK_ALIGNMENT, 2);

nie do końca jeszcze wiem co ta funkcja robi ale teraz poprawnie ładuje się z 90% tekstur. Wiem tyle że problem tyczy się wyrównania bitów zdjęcia... ale ciężko mi na razie coś więcej na ten temat powiedzieć.

* a użycie glPixelStorei(GL_UNPACK_ALIGNMENT, 1) rozwiązuje problem całkowicie ;)
komentarz 12 października 2019 przez j23 Mędrzec (194,920 p.)

Wiem tyle że problem tyczy się wyrównania bitów zdjęcia

Nie bitów a wierszy/scanlines obrazka.

0 głosów
odpowiedź 12 października 2019 przez criss Mędrzec (172,590 p.)
Zobacz w debugerze co dostajesz do nrChannels i zawartość tablicy data. Może bug stb_image...
komentarz 12 października 2019 przez Jakub 0 Pasjonat (23,120 p.)
dostaje wartość 3, więc tak chyba powinno być...

Podobne pytania

0 głosów
1 odpowiedź 319 wizyt
0 głosów
0 odpowiedzi 701 wizyt
pytanie zadane 9 maja 2017 w Inne języki przez pingwin1993 Użytkownik (570 p.)
0 głosów
1 odpowiedź 552 wizyt

92,572 zapytań

141,422 odpowiedzi

319,644 komentarzy

61,959 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...