|
|
我是新手,今天在vc2005中运行terrain程序的时候,发现无法运行。vector下标越界。
我是intel 915的集显,一看最大定点数是65534,显然大于这个程序的需求,于是
经过反复定位,发现是lightTerrain函数中两句循环:
for(int i = 0; i < textureDesc.Height; i++)
{
for(int j = 0; j < textureDesc.Width; j++)
{
其中textureDesc.Height和textureDesc.Width都是64
可是,当i达到63的时候,循环内部的函数c *= computeShade(i, j, directionToLight);中的
float heightC = getHeightmapEntry(cellRow+1, cellCol);访问越界。
可以改为
for(int i = 0; i < textureDesc.Height-1; i++)
{
for(int j = 0; j < textureDesc.Width-1; j++)
可是,为什么我在同学的机子上运行的时候,就不会出错呢? |
|