游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3013|回复: 6

求助!如何看懂NeHe Lesson 31中的代码?

[复制链接]

9

主题

53

帖子

53

积分

注册会员

Rank: 2

积分
53
发表于 2006-4-12 22:13:00 | 显示全部楼层 |阅读模式
   各位网友,想笑就笑吧.没什么.其实我非常想学好游戏程序设计.
   我把自己不懂的地方以注释的方式分别标出来,希望能得到帮助.谢谢!
  
(1.)   
ifstream inputFile( filename, ios::in | ios::binary | ios::nocreate );
      //这句是否原本是这样的:
  //ifstream inputFile;
  //inputfile.open( filename, ios::in | ios::binary | ios::nocreate );
...
  byte *pBuffer = new byte[fileSize];
  inputFile.read( pBuffer, fileSize );
  inputFile.close();
(2.)
const byte *pPtr = pBuffer;//这里为什么要用const?是保证byte[fileSize]的首地址不变吗?
(3.)  
MS3DHeader *pHeader = ( MS3DHeader* )pPtr;
//是否可以这样理解:虽然pPtr的类型转变了,但是&pPtr及pPtr的值都没变,而且把byte[fileSize]
//的首地址赋值给了pHeader .
  pPtr += sizeof( MS3DHeader );
...
(4.)
int nVertices = *( word* )pPtr; //word是什么样的类型?
m_numVertices = nVertices;
m_pVertices = new Vertex[nVertices];
(5.)
pPtr += sizeof( word );//pPtr及*pPtr应该都在变化,他们的值会是怎样的,pPtr=?,*pPtr=?



86

主题

2251

帖子

2386

积分

金牌会员

Rank: 6Rank: 6

积分
2386
QQ
发表于 2006-4-13 01:21:00 | 显示全部楼层

Re:求助!如何看懂NeHe Lesson 31中的代码?

1)我还在用fopen咧。你再看看ifstream类。
2)
const意味着"只读",并不单单指常量。
const int a;
int const a;
const int *a;
int * const a;
int const * a const;
前两个的作用是一样,a是一个常整型数。
第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。
第四个意思a 是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。
最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。
3)把指针做强制转型,指针的地址值不会变的。变化的是指针指向数据的字节长度,比如步进不同的指针时,跳过的字节数不同。
4)不知道,自定义类型吧,你自己找到定义处看看吧。
5)(*pPtr)变化了吗?

9

主题

53

帖子

53

积分

注册会员

Rank: 2

积分
53
 楼主| 发表于 2006-4-14 00:00:00 | 显示全部楼层

Re:求助!如何看懂NeHe Lesson 31中的代码?

非常感谢funcman!谢谢!

...
const byte *pPtr = pBuffer;
...(6.)
int nVertices = *( word* )pPtr; //*pPtr原本是byte型的,经过转型后,属于int型,
                                            //而且表示顶点的个数,真是不可思意.
...(7.)
memcpy( m_pVertices.m_location, pVertex->m_vertex, sizeof( float )*3 );
//这句的功能是把顶点从缓冲区拷贝到内存.
//想必pVertex->m_vertex代表开始地址,是在缓冲区的吧?
//是否可以用pBuffer代替,表达式如何写?
...
恳请各位高手指点.
不胜感激!

9

主题

53

帖子

53

积分

注册会员

Rank: 2

积分
53
 楼主| 发表于 2006-5-4 17:00:00 | 显示全部楼层

Re:求助!如何看懂NeHe Lesson 31中的代码?

请问诸位都能看懂这篇课文的代码吗?
需要那些背景知识才能读懂?
高手们是如何写代码load 3d model的?

55

主题

331

帖子

337

积分

中级会员

Rank: 3Rank: 3

积分
337
发表于 2006-5-5 15:14:00 | 显示全部楼层

Re:求助!如何看懂NeHe Lesson 31中的代码?

问题 1:是的

问题 2:const 确保你不会在一不小心的情况下把 pBuffer 的数据改变了。(预防比芒羊补牢好嘛)

问题 3:不明白你的意思。

问题 4:word 是双字节类型(16位),(补充:byte 是单字节(8位),int(32位))

           第二个问题还是不明白你在说什么。(all end...)

29

主题

97

帖子

99

积分

注册会员

Rank: 2

积分
99
发表于 2006-8-30 02:56:00 | 显示全部楼层

Re:求助!如何看懂NeHe Lesson 31中的代码?

其实你仔细一点应该都看的懂的,不难,只要了解一点指针内容即可看懂了,有空交流一下吧,我也在看。

139

主题

2005

帖子

2057

积分

金牌会员

Rank: 6Rank: 6

积分
2057
QQ
发表于 2006-8-30 10:33:00 | 显示全部楼层

Re:求助!如何看懂NeHe Lesson 31中的代码?

fopen比stream好用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-25 05:59

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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