2016-10-01 72 views
0

我正在运行OS X 10.10.5。当我尝试(从终端)加载某些纹理一个OpenGL代码跑,我得到这个错误:“无法打开文件chair.bmp” 错误得到执行这条线提供相对路径时,加载纹理将不起作用

chairTexture = LoadTexBMP("chair.bmp"); 

提供全方位后发出路径解决了这个问题,但我需要使它与相对路径一起工作。

示例代码带有一个生成文件:

# Example 9 
    EXE=ex9 

    # Main target 
    all: $(EXE) 

    # MinGW 
    ifeq "$(OS)" "Windows_NT" 
    CFLG=-O3 -Wall 
    LIBS=-lglut32cu -lglu32 -lopengl32 
    CLEAN=del *.exe *.o *.a 
    else 
    # OSX 
    ifeq "$(shell uname)" "Darwin" 
    CFLG=-O3 -Wall -Wno-deprecated-declarations 
    LIBS=-framework GLUT -framework OpenGL 
    # Linux/Unix/Solaris 
    else 
    CFLG=-O3 -Wall 
    LIBS=-lglut -lGLU -lGL -lm 
    endif 
    # OSX/Linux/Unix/Solaris 
    CLEAN=rm -f $(EXE) *.o *.a 
    endif 

    # Compile rules 
    .c.o: 
     gcc -c $(CFLG) $< 
    .cpp.o: 
     g++ -c $(CFLG) $< 

    # Link 
    ex9:ex9.o 
     gcc -O3 -o [email protected] $^ $(LIBS) 

    # Clean 
    clean: 
     $(CLEAN) 

运行在终端收率/Users/nina/CG/ex9

所有纹理图像是在文件夹EX9与ex9.c和生成文件沿着pwd。 我试图找到一个解决方案,但我找到的所有解决方案都是关于在Xcode中更改我不使用的工作目录。

+0

尝试:chairTexture = LoadTexBMP(“./ chair.bmp”); – Murillio4

+0

@ Murillio4已经尝试过,没有工作。 – nina

+0

你有没有试过不使用-O3? -O2和-O3对我的程序来说确实很奇怪 – Murillio4

回答

0

我终于明白我做错了什么。我在终端中使用的是open ex9,其行为就像我点击可执行文件一样,然后依次将工作目录更改为主目录。因此,为了不改变工作目录,我应该使用./ex9