提供相对路径时加载纹理不起作用
Loading texture won't work when providing relative path
我是 运行宁 OS X 10.10.5。当我尝试 运行(从终端)加载一些纹理的 OpenGL 代码时,出现此错误:"Cannot open file 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)
运行ning pwd
在终端中产生 /Users/nina/CG/ex9
所有纹理图像连同 ex9.c 和 makefile 都在 ex9 文件夹中。
我试图找到一个解决方案,但我找到的所有解决方案都在谈论更改 Xcode 中我没有使用的工作目录。
我终于明白我做错了什么了。我在终端中使用了 open ex9
,它的行为就好像我在单击可执行文件一样,它又将工作目录更改为主目录。所以,为了不改变工作目录,我应该使用 ./ex9
我是 运行宁 OS X 10.10.5。当我尝试 运行(从终端)加载一些纹理的 OpenGL 代码时,出现此错误:"Cannot open file 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)
运行ning pwd
在终端中产生 /Users/nina/CG/ex9
所有纹理图像连同 ex9.c 和 makefile 都在 ex9 文件夹中。 我试图找到一个解决方案,但我找到的所有解决方案都在谈论更改 Xcode 中我没有使用的工作目录。
我终于明白我做错了什么了。我在终端中使用了 open ex9
,它的行为就好像我在单击可执行文件一样,它又将工作目录更改为主目录。所以,为了不改变工作目录,我应该使用 ./ex9