2013-11-14 3 views
1

Я пытаюсь текстурировать куб в openGL. Я использую GLUT и Visual C++ 2010. Я использую популярный imageloader SOIL.h, и я использую код от другого пользователя. Код предназначен для рисования трехмерного куба на экране с нанесенными на него текстурами. Я включил SOIL.h в папке файлы заголовков в VC++, но каждый раз, когда я компиляции я получаю эту ошибку:GLUT OpenGL Cube exturing error

error LNK2019: unresolved external symbol _SOIL_load_OGL_texture referenced in function "int __cdecl LoadGLTextures(void)" 

Я буду предоставлять любую дополнительную информацию, если это необходимо.

Вот мой код:

#include <stdio.h> 
#include <stdlib.h> 
#include <glut.h> 

#include "SOIL.h" 

GLuint texture[6];//6 textures for 6 faces of the cube 

GLfloat xRot,yRot,zRot;//control cube's rotation 

int LoadGLTextures() 
{ 
int Status = 0; 
char *bmpFile[6]  {"BmpFile/1.bmp","BmpFile/2.bmp","BmpFile/3t.bmp","BmpFile/4.bmp","BmpFile/5.bmp","BmpFile/6.bmp"}; 

for (int i = 0;i < 6;++i){ 
    texture[i] = SOIL_load_OGL_texture(
     bmpFile[i], 
     SOIL_LOAD_AUTO, 
     SOIL_CREATE_NEW_ID, 
     SOIL_FLAG_INVERT_Y); 
    printf("texture[%d]: %d\n",i,texture[i]); 
    if(texture[i] == 0){ 
     Status = 0; 
    glBindTexture(GL_TEXTURE_2D,texture[i]); 
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); 
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);} 
} 

return Status; 
} 

int init(){ 
    glEnable(GL_TEXTURE_2D); 
    glShadeModel(GL_SMOOTH); 
    glClearColor(0.0f,0.0f,0.0f,0.5f); 
    glClearDepth(1.0f); 
    glEnable(GL_DEPTH_TEST); 
    glDepthFunc(GL_LEQUAL); 
    glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST); 
    return 1; 
} 

void display(){ 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
    glLoadIdentity(); 
    glTranslatef(0.0f,0.0f,-5.0f); 
    glRotatef(xRot,1.0f,0.0f,0.0f); 
    glRotatef(yRot,0.0f,1.0f,0.0f); 
    glRotatef(zRot,0.0f,0.0f,1.0f); 


    glBindTexture(GL_TEXTURE_2D,texture[0]); 

    glBegin(GL_QUADS); 

    glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); 
    glTexCoord2f(1.0f, 0.0f); glVertex3f(1.0f, -1.0f, 1.0f); 
    glTexCoord2f(1.0f, 1.0f); glVertex3f(1.0f, 1.0f, 1.0f); 
    glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); 
    glEnd(); 

    glBindTexture(GL_TEXTURE_2D,texture[1]); 
    glBegin(GL_QUADS); 
    glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f); 
    glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); 
    glTexCoord2f(0.0f, 1.0f); glVertex3f(1.0f, 1.0f, -1.0f); 
    glTexCoord2f(0.0f, 0.0f); glVertex3f(1.0f, -1.0f, -1.0f); 
    glEnd(); 

    glBindTexture(GL_TEXTURE_2D,texture[2]); 
    glBegin(GL_QUADS); 
    glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); 
    glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, 1.0f, 1.0f); 
    glTexCoord2f(1.0f, 0.0f); glVertex3f(1.0f, 1.0f, 1.0f); 
    glTexCoord2f(1.0f, 1.0f); glVertex3f(1.0f, 1.0f, -1.0f); 
    glEnd(); 

    glBindTexture(GL_TEXTURE_2D,texture[3]); 
    glBegin(GL_QUADS); 
    glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, -1.0f); 
    glTexCoord2f(0.0f, 1.0f); glVertex3f(1.0f, -1.0f, -1.0f); 
    glTexCoord2f(0.0f, 0.0f); glVertex3f(1.0f, -1.0f, 1.0f); 
    glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); 
    glEnd(); 

    glBindTexture(GL_TEXTURE_2D,texture[4]); 
    glBegin(GL_QUADS); 
    glTexCoord2f(1.0f, 0.0f); glVertex3f(1.0f, -1.0f, -1.0f); 
    glTexCoord2f(1.0f, 1.0f); glVertex3f(1.0f, 1.0f, -1.0f); 
    glTexCoord2f(0.0f, 1.0f); glVertex3f(1.0f, 1.0f, 1.0f); 
    glTexCoord2f(0.0f, 0.0f); glVertex3f(1.0f, -1.0f, 1.0f); 
    glEnd(); 

    glBindTexture(GL_TEXTURE_2D,texture[5]); 
    glBegin(GL_QUADS); 
    glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f); 
    glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); 
    glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); 
    glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); 
    glEnd(); 

    xRot += 0.3f; 
    yRot += 0.4f; 
    zRot += 0.5f; 

    glutSwapBuffers(); 
} 

void reshape(int w,int h){ 
    glViewport(0,0,(GLsizei)w,(GLsizei)h); 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    gluPerspective(60.0f,(GLfloat)w/(GLfloat)h,1,100); 
    glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity(); 
} 

int main(int argc,char** argv){ 
    glutInit(&argc,argv); 
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); 
    glutInitWindowSize(400,400); 
    glutInitWindowPosition(100,100); 
    glutCreateWindow("Texture Map"); 
    init(); 
    glutDisplayFunc(display); 
    glutReshapeFunc(reshape); 
    glutMainLoop(); 
    return 0; 
} 
+0

библиотека не связана должным образом –

ответ

1

Похоже, вы забыли добавить необходимую библиотеку в настройках линкера.

Добавьте путь папки libsoil.lib к настройкам компоновщика визуальной студии.

Возможно, вам придется создавать библиотеку из исходного кода для окон, если она еще не предоставлена.

+0

Это отсортировано, спасибо большое за ваше время – user2990096