Alex的虚拟世界

Just for fun

Vc中的文件路径问题

      最近打算写一个volume rendering中的focus & context算法,准备用GPU的raycasting来实现,对以前写的程序一直不太满意,View.Cpp奇大无比,里面的类全部糅到了一起,所以打算重新写一个。为了简洁起见,窗口用glut来生成。关于raycasting的具体算法在后面的文章中再具体细说,本文只说文件路径问题。

     通过vs2005新建一个win23 console型,名为GPU_RayCasting的工程时,GPU_RayCasting.cpp文件和众多工程文件都在根目录下。为了方便管理,在工程中分别建立了build、src、data等三个文件夹,而src文件夹又由core、app、shader、math等四个文件夹组成,来存放不同的文件。把众多工程文件放入build文件夹中,GPU_RayCasting.cpp放入'\src\app'文件夹中,并在'\src\math'文件夹中放入Vector3.h文件。

   在GPU_RayCasting.cpp中加载头文件。如何选择头文件的路径呢?绝对路径比较简单,但当工程文件改变位置后,绝对路径就不能用了,为增加程序的可移植性,选用相对路径较好。

      用#include 加载头文件时,"./"表示当前目录,"../"表示当前目录的上一级目录。注意!这个当前目录不是工程所在的目录,而是该文件所在的目录。在include中,'/'与'\'的功能貌似一样,#include "../math/Vector3.h"与#include "..\math\Vector3.h"也貌似等价。

      当使用cgCreateProgramFromFile(CGcontext ctx, CGenum program_type, const char *program_file, CGprofile profile, const char *entry, const char **args)函数创建Cg程序时,const char *program_file中存放是Cg程序的路径,此时同样应选用相对路径来加载Cg程序。同样,"./"表示当前目录,"../"表示当前目录的上一级目录。注意,这个当前目录不是该文件所在的目录,而是解决方案文件sln所在的目录。

      在字符串中,'\'是转义字符,要表示'\',在字符串中应写为'\\',因此"../src/shader/raycasting_shader.cg"与 "..\\src\\shader\\raycasting_shader.cg"等价。



posted on 2008-12-03 19:46  Alex226  阅读(1918)  评论(0编辑  收藏  举报

导航