Witam, robię prostą grę w której postać chodzi po pokoju i może oglądać co tam jest i mam problem. Otóż chcę zrobić pokój jako jedną bryłę wymiary 12x4x12 i mam problem z teksturowaniem. Podłoga ma być jedną teksturą, ściany kolejną i sufit jeszcze inną. Czy idzie utworzyć jedną bryłę i teksturować ją częściowo tzn dolną ścianę 1 tekstura ściany 2 sufit 3.? Czy lepiej rozbić to na niezależne płaszczyzny? Czy potrzebuję tablicę ze współrzędnymi do teksturowania osobno podłogi ścian i sufitu? Nie mam pojęcia jak to ruszyć z góry dziękuję za każdą pomoc
opengl 2 - czy dzielić bryły do teksturowania?
- Rejestracja: dni
- Ostatnio: dni
Różnie można robić.
Np. ładujesz 6 osobnych tekstur, które potem sobie zamieniasz podczas rysowania. Ale można też spakować te 6 tekstur w jedną, a potem po prostu manipulować ofsetami. sześć tekstur w jednej wygląda np. tak:
| A|B|C|D|E|F|
albo tak:
| A|B|C|
|D|E|F|
- Rejestracja: dni
- Ostatnio: dni
- Postów: 231
Może na początek będzie lepiej zrobić ten sześcian, a potem zbindować odpowiednią teksturę i rysować jedną ścianę, potem drugą teksturę i rysować podłogę (wycinek sześcianu) itd. Unikniesz zabawy z robieniem odpowiedniej tekstury, z drugiej strony takie ciągłe zmiany tekstur są bardziej wymagające dla karty, ale to nie jest aż takie strasznie mocno obciążające.
- Rejestracja: dni
- Ostatnio: dni
Ok trochę ruszyłem z projektem i natrafiłem na pewien problem wygląda to tak:
Mam bryłę 8x0,5x4 i teksturuję ją a w wyniku mam coś takiego

Wrzucam kod tylko dla jednej z tych ścian 2 jest analogicznie. Sufit i podłoga wyglądają dobrze
kod rysujący:
glBindTexture(GL_TEXTURE_2D,scianySrodek);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer( 3, GL_FLOAT, 0, geomTexCoordsScinySrodek);
mat4 M4=mat4(1.0f);
M4 = rotate(M4,PI/2,vec3(0,1,0));
glLoadMatrixf(value_ptr(V*M4));
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3,GL_FLOAT,0,scianySrodekTexCoords);
glDrawArrays(GL_QUADS,0,scianySrodekVertexCount);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
tablica do teksturowania:
float geomTexCoordsSciany[]={
0,0,0,
1,0,0,
1,1,0,
0,1,0,
1,0,0,
1,0,1,
1,1,1,
1,1,0,
1,0,1,
0,0,1,
0,1,1,
1,1,1,
0,0,1,
0,0,0,
0,1,0,
0,1,1
};
ogólnie wcześniej gdy było to w jakimś kolorze wszystko wyglądało dobrze dopiero gdy próbuję to oteksturować to dostaję taki efekt