Wpis z mikrobloga

Czy jest tu jakiś ekspert od OpenGL? Piszę sobie w C++ i potrzebuję użyć kilku tekstur w programie, ale nie do końca wiem jak to zrobić, ciągle wszystko mam jedną teksturą.

glBindTexture()
wydaje się działać tylko raz, nieważne czy jako parametr podaję ID tekstury, czy nulla

#programowanie #opengl
  • 8
@extern-int: Klik

Potem używam tego tak:

glBindTexture(GL_TEXTURE_2D, brickTexture);
// render z użyciem brick texture
glBindTexture(GL_TEXTURE_2D, steelTexture);
// render z użyciem steel texture
glBindTexture(GL_TEXTURE_2D, 0);
// render bez tekstury
@blisher:

brickTexture = MyLoadBitmap(


"brick.bmp"


);

steelTexture = MyLoadBitmap(



"steel.bmp"


);


unsigned
```**```
 
```**```
int
```**```
* textures = 
```**```
new
```**```
 
```**```
unsigned
```**```
 
```**```
int
```**```
[2];

textures[0] = brickTexture;

textures[1] = steelTexture;

glGenTextures(2, textures);

Ja nie jestem ekspertem, ale z tego co kojarzę funkcja glGenTextures(2, textures) rezerwuje ID tekstur i zwraca to w 'textures'. Czyli wszystko co wpisałeś do tablicy wcześniej jest kasowane. Mogę się też mylić.
@blisher: Funkcja MyLoadBitmap(const char* path) na moje oko też nie powinna działać...

glEnable(GL_TEXTURE_2D);


unsigned int
```**```
texture;

(...) //nie używasz w kodzie zmiennej texture

```**```
return
```**```
texture;

```Powinieneś najpierw rezerwować ID za pomocą glGenTextures, potem```
glBindTexture(GL_TEXTURE_2D, brickTexture);

// ładujesz pierwsza teksture

glBindTexture(GL_TEXTURE_2D, steelTexture);

// ładujesz drugą teksture