2013-08-14 1 views
0

C++의 SOIL에 문제가 있습니다. 문제는 주어진 경로에서 이미지를로드하려고 할 때 흰색으로 만 표시됩니다. 다음SOIL에 이미지가 표시되지 않습니다.

처음 나는 메모리에로드 :

_t = SOIL_load_OGL_texture(_texture.c_str(), 
         SOIL_LOAD_AUTO, 
         SOIL_CREATE_NEW_ID, 
         SOIL_FLAG_INVERT_Y); 

나중에이 같은 사용 :

glBindTexture(GL_TEXTURE_2D, _t); 

glPushMatrix(); 

glBegin(GL_QUADS); 
    glTexCoord2f (0, 0); glVertex3f(-1 + (_p.X)/(App::WinSize().X/2), 1 - (_p.Y)/(App::WinSize().Y/2), 0.0f); 
    glTexCoord2f (1, 0); glVertex3f(-1 + (_p.X + _s.X)/(App::WinSize().X/2), 1 - (_p.Y)/(App::WinSize().Y/2), 0.0f); 
    glTexCoord2f (1, 1); glVertex3f(-1 + (_p.X + _s.X)/(App::WinSize().X/2), 1 - (_p.Y + _s.Y)/(App::WinSize().Y/2), 0.0f); 
    glTexCoord2f (0, 1); glVertex3f(-1 + (_p.X)/(App::WinSize().X/2), 1 - (_p.Y + _s.Y)/(App::WinSize().Y/2), 0.0f); 
glEnd(); 

glPopMatrix(); 

I는 I가있는 이미지 폴더를 위치 비주얼 스튜디오 2012을 사용 .exe 파일이 디버깅 될 때 끝나는 폴더.

가 나는 관련이 있는지 확실하지 않습니다,하지만 여기에 OpenGL을 설정은이 실행되고있을 때 프로그램이 실행됩니다 :

glutInit(&argc, &argv); 
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA | GLUT_MULTISAMPLE | GLUT_BORDERLESS); 
glEnable(GLUT_MULTISAMPLE); 
glEnable(GL_TEXTURE_2D); 
glEnable(GL_BLEND); 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
glClearColor(0.0, 0.0, 0.0, 1.0); 
glLoadIdentity(); 
glOrtho(0.0, size.X, 0.0, size.Y, -1.0, 1.0); 
glutInitWindowPosition(position.X, position.Y); 
glutInitWindowSize(size.X, size.Y); 

답변

0

당신은 로딩 과정에서 오류를 검사하고 있습니까? 당신이 당신의 질감이 오류없이로드되어 있는지 확인하는 SOIL_load_OGL_texture를 사용하여 텍스처를로드 직후

/* check for an error during the load process */ 
if(0 == _t) 
{ 
    printf("SOIL loading error: '%s'\n", SOIL_last_result()); 
} 

를 추가합니다.

+0

시도해 보니 오류가 없습니다. – Steffen

+0

@Stef : 이미지의 상대 경로를 사용하고 있습니까? – user2681063

+0

올바른 경로를 사용해야합니다. .exe는 디버그 폴더에 있습니다. 그것으로 나는 TestImages라는 이름의 폴더를 넣는다. 내가 사용하는 경로는 다음과 같습니다. "TestImages/CrossNoMouse.png" – Steffen

관련 문제