SOIL segmentation fault ao carregar textura no OpenGL/C++ [RESOLVIDO]

1. SOIL segmentation fault ao carregar textura no OpenGL/C++ [RESOLVIDO]

Adriano Andrei Goede
adrianogoede

(usa Debian)

Enviado em 08/10/2021 - 12:46h

Olá pessoal,

Estou no processo de aprender sobre OpenGL, e no momento estou entrando na parte de texturas, pois bem, quando tento usar a função SOIL_load_OGL_texture simplesmente recebo um segmentation fault para o qual não consegui achar solução, segue o código C++ abaixo:


#ifndef _TEXTURATOR_
#define _TEXTURATOR_

#include <iostream>
#include <GL/gl.h>
#include <SOIL/SOIL.h>

class TextureManager
{
public:

static GLuint LoadTexture(const char* imagePath)
{
GLuint texture{SOIL_load_OGL_texture(imagePath, SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID ,SOIL_FLAG_INVERT_Y)};
if (texture == 0)
std::cout << "\nERROR: Image corrupted/not found!\n";
return texture;
}

};

#endif


Quando comento a chamada à função LoadTexture no Main o programa compila sem erros ou warnings, a biblioteca SOIL foi instalada pelo apt-get (pacote libsoil-dev).

"g++ Main.cpp -o Main -lGL -lglut -lGLEW -lglfw -lSOIL" é o comando que estou usando pra compilar.

As imagens que estou tentando usar abrem normalmente tanto no visualizador quanto quando lidas usado uma ifstream.

Caso interesse, estou usando Debian 11.

Alguém saberia me ajudar??

Muito Obrigado!! :)


  


2. MELHOR RESPOSTA

Buckminster
Buckminster

(usa Debian)

Enviado em 09/10/2021 - 02:14h

Tente usar uma dessas:
https://www.khronos.org/opengl/wiki/Texture
ou
https://open.gl/textures

A SOIL_load_OGL_texture() está obsoleta desde o Opengl 3.0.

O erro de segmentantion_fault é erro de acesso à memória, a SOIL_load_OGL_texture() está tentando acessar um endereço de memória que já está ocupado ou não encontra um endereço por estar obsoleta ou algo parecido.

Pode ser também problema de incompatibilidade entre sistemas 32 bits e 64 bits.

Caso queria usar a SOIL_load_OGL_texture() siga isso:
https://stackoverflow.com/questions/18886598/how-do-i-install-soil-simple-opengl-image-loader


________________________________________________
Always listen the Buck!
Sanou tua dúvida, resolveu teu problema?
Então marque como Resolvido e escolha a Melhor Resposta.


3. Re: SOIL segmentation fault ao carregar textura no OpenGL/C++ [RESOLVIDO]

Samuel Leonardo
SamL

(usa XUbuntu)

Enviado em 09/10/2021 - 14:54h

Além do que o buckminster disse, pode ser também o caso das dimensões da imagem estarem fora do padrão.
Por exemplo, carregar textura pura em opengl requer que as dimensões sejam em potêntica de 2: tipo, 32x32, 64x16, 1024x512, etc
Experimente colocar a textura em potencia de 2 e veja se resolve.


4. Re: SOIL segmentation fault ao carregar textura no OpenGL/C++ [RESOLVIDO]

Adriano Andrei Goede
adrianogoede

(usa Debian)

Enviado em 10/10/2021 - 23:36h


Buckminster escreveu:

Tente usar uma dessas:
https://www.khronos.org/opengl/wiki/Texture
ou
https://open.gl/textures

A SOIL_load_OGL_texture() está obsoleta desde o Opengl 3.0.

O erro de segmentantion_fault é erro de acesso à memória, a SOIL_load_OGL_texture() está tentando acessar um endereço de memória que já está ocupado ou não encontra um endereço por estar obsoleta ou algo parecido.

Pode ser também problema de incompatibilidade entre sistemas 32 bits e 64 bits.

Caso queria usar a SOIL_load_OGL_texture() siga isso:
https://stackoverflow.com/questions/18886598/how-do-i-install-soil-simple-opengl-image-loader


________________________________________________
Always listen the Buck!
Sanou tua dúvida, resolveu teu problema?
Então marque como Resolvido e escolha a Melhor Resposta.


Acabou que o problema era esse mesmo, quando seleciono OpenGL 3.x na inicialização roda sem erros, mas quando seleciono 4.x o erro ocorre. Vou tentar uma das opções do link que você colocou. Muito obrigado!! :)







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts