Programação com OpenGL/Modern OpenGL Tutorial 06: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Linha 255:
 
== Usando o SOIL ==
 
Em desenvolvimento
 
o SOIL provém uma maneira de carregar um arquivo de imagem PNG, JPG e alguns outros formatos, feitos para integrar com o OpenGL.
É uma biblioteca bastante simples com nenhuma dependência. É usada com cobertura do SFML (Embora o SFML também use o libjpeg e libpng diretamente).
 
Para instala-lo:
<source lang="bash">
aptitude install libsoil-dev
</source>
 
Referencie ele no seu Makefile:
<source lang="make">
LDLIBS=-lglut -lSOIL -lGLEW -lGL -lm
</source>
 
Uma função de nivel-alto permite que você carregue diretamente para um contexto OpenGL:
<source lang="cpp">
glActiveTexture(GL_TEXTURE0);
GLuint texture_id = SOIL_load_OGL_texture
(
"res_texture.png",
SOIL_LOAD_AUTO,
SOIL_CREATE_NEW_ID,
SOIL_FLAG_INVERT_Y
);
if(texture_id == 0)
cerr << "SOIL loading error: '" << SOIL_last_result() << "' (" << "res_texture.png" << ")" << endl;
</source>
 
* O <code>SOIL_FLAG_INVERT_Y</code> intermediá a reversão da coordenada Y como dizemos acima.
* O SOIL também adapta as texturas NPOT(as não potencia de 2), quando a placa gráfica não manipula diretamente
 
Note que com este método, você não tem acesso as dimensões da imagem. Para isto, você precisa de uma API de nivel-baixo:
<source lang="cpp">
int width, height;
unsigned char* img = SOIL_load_image("res_texture.png", &width, &height, NULL, 0);
glGenTextures(...
...
</source>