游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1489|回复: 1

关于 introduction to 3d gameprogramming 那本书里的 terrain 程序无

[复制链接]

2

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2009-3-5 15:27:00 | 显示全部楼层 |阅读模式


  我是新手,今天在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++)
可是,为什么我在同学的机子上运行的时候,就不会出错呢?

0

主题

56

帖子

62

积分

注册会员

Rank: 2

积分
62
发表于 2009-3-16 14:59:00 | 显示全部楼层

Re:关于 introduction to 3d gameprogramming 那本书里的 terrain 程序

你访问了本不属于你这块buffer的内存。程序在你电脑上运行的时候正好越界读到的是一块受保护的内存,所以就报错了。如果你是在你同学的机器上编译运行的,那么有可能是编译器不同或者编译器设置不同(比如是否开了优化)导致一些bug没有暴露出来,当然也可能跟电脑的运行状况。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-20 03:23

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表