我正在运行OS X 10.10.5。当我尝试从终端运行加载某些纹理的OpenGL代码时,出现以下错误:“无法打开文件chair.bmp”
执行此行后发出错误

chairTexture = LoadTexBMP("chair.bmp");


提供完整的路径可以解决问题,但是我需要使它与相对路径一起使用。

该示例代码附带一个makefile:

    # 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 $@ $^   $(LIBS)

    #  Clean
    clean:
        $(CLEAN)


在终端中运行pwd会产生/Users/nina/CG/ex9

所有纹理图像以及ex9.c和makefile都位于ex9文件夹中。
我试图找到一个解决方案,但是找到的所有解决方案都涉及在不使用的Xcode中更改工作目录。

最佳答案

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

关于c - 提供相对路径时,加载纹理将不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39812054/

10-09 16:25