2013-02-21 5 views
2

У меня есть следующий код, который должен отображать изображение, но изображение никогда не появляется.Отображение изображения с использованием SOIL с OpenGL

GLuint tex_2d = SOIL_load_OGL_texture (
    "ImageName.tga", 
    SOIL_LOAD_AUTO, 
    SOIL_CREATE_NEW_ID, 
    SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | SOIL_FLAG_COMPRESS_TO_DXT 
); 
glColor3f(0.0f,1.0f,.50f); 
glBindTexture(GL_TEXTURE_2D, tex_2d); 
glEnable(GL_TEXTURE_2D); 
glBegin(GL_QUADS); 
    glTexCoord2d(0,0);  glVertex3f(factor*BOARD_BREADTH/2,-factor*BOARD_LENGTH/2,0); 
    glTexCoord2d(0,1);  glVertex3f(factor*BOARD_BREADTH/2,factor*BOARD_LENGTH/2,0); 
    glTexCoord2d(1,1);  glVertex3f(-factor*BOARD_BREADTH/2,factor*BOARD_LENGTH/2,0); 
    glTexCoord2d(1,0);  glVertex3f(-factor*BOARD_BREADTH/2,-factor*BOARD_LENGTH/2,0); 


glEnd(); 

Но я получаю только зеленый прямоугольник как выход. Ошибка компиляции отсутствует.

+1

ли вам проверьте, действительно ли 'tex_2d' не 0 (т. е. если загрузка изображения не удалась)? Кроме того, вызов' glColor' окажет влияние на рендеринг текстуры в фиксированном конвейере, знаете ли вы, что? –

+0

кажется, что есть проблема. Он отображает imgae, когда полный путь, как 'C: \\ Images \\ Imagename.tga', задан, что, конечно, не всегда возможно. Поэтому я хочу знать, какой относительный путь я должен использовать для файла изображения? ** Код :: Блоки ** 10.05 как моя IDE –

+0

Вы просите m e как построить относительный путь для файла? * Srsly? * '..' является« одним каталогом ». Поэтому, если ваш код находится в '/ whatever/bin /' и изображении в '/ whatever/images /', путь будет '../ images/imagename.tga'. –

ответ

2

SOIL_load_OGL_texture возвращает правильный идентификатор текстуры OpenGL, если загрузка завершается успешно, 0, если он терпит неудачу. Вы всегда должны это проверять!

В вашем случае, если неправильный путь вызвал проблему, используйте относительные пути. Вот пример структуры папок:

root/ 
--- data/ 
-------- music/ 
-------- images/ 
------------ texture.tga 
--- bin/ 
-------- debug/ 
------------ program.exe 

В этом случае относительный путь будет "../../data/images/texture.tga". Обратите внимание, как мы поднимаемся в два раза (по .., чтобы добраться до root/, а затем перейти в data/images/.

Таким образом, если вы сохранить структуру папок, это не имеет значения, где root/ находится на диске.

Смежные вопросы