菜鸟请教一点简单问题

guoan4488 2010-06-28 04:05:26

#define GLM_FLAT (1<<0)
#define GLM_SMOOTH (1<<1)
#define GLM_COLOR (1<<3)

mode=GLM_SMOOTH|GLM_COLOR;
if (mode&GLM_FLAT&&!model->facetnorms)
{
mode &= ~GLM_FLAT;
}

其中model是一个结构体的实例,定义如下:
typedef struct _GLMmodel
{
char *pathname;
char *mtllibname;
GLuint numvertices;
GLfloat *vertices;
GLuint numnormals;
GLfloat *normals;
GLuint numtexcoords;
GLfloat *texcoords;
GLuint numfacetnorms;
GLfloat *facetnorms;
GLuint numtriangles;
GLMtriangle *triangles;
GLuint nummaterials;
GLMmaterial *materials;
GLuint numgroups;
GLMgroup *groups;
GLfloat position[3];
}GLMmodel;

求大侠帮我解释一下(分不多,全给你了)
...全文
109 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
YY_006 2010-06-28
  • 打赏
  • 举报
回复
看不懂啊。。。。。。。。。。。。。。。
guoan4488 2010-06-28
  • 打赏
  • 举报
回复
谢谢,明白了

[Quote=引用 6 楼 zhao4zhong1 的回复:]

& 按位与
对指针变量p进行!即p==NULL
mode &= ~GLM_FLAT;//~是按位取反,

mode &= ~GLM_FLAT;
即mode = mode & ~GLM_FLAT;
即mode = mode & ~(1<<0);
即mode = mode & 0xFEu;
即将mode的最低位清零
[/Quote]
ialwaysgo 2010-06-28
  • 打赏
  • 举报
回复
如楼上
赵4老师 2010-06-28
  • 打赏
  • 举报
回复
mode &= ~(1<<0);
如果unsigned char mode;//mode = mode & 0xFEu;
如果unsigned short mode;//mode = mode & 0xFFFEu;
如果unsigned int mode;//mode = mode & 0xFFFFFFFEu;
赵4老师 2010-06-28
  • 打赏
  • 举报
回复
& 按位与
对指针变量p进行!即p==NULL
mode &= ~GLM_FLAT;//~是按位取反,

mode &= ~GLM_FLAT;
即mode = mode & ~GLM_FLAT;
即mode = mode & ~(1<<0);
即mode = mode & 0xFEu;
即将mode的最低位清零
guoan4488 2010-06-28
  • 打赏
  • 举报
回复
大侠,再请教一下这一句:
if (mode&GLM_FLAT&&!model->facetnorms)
{
mode &= ~GLM_FLAT;
}
问题如下:
(1)两个地址符&&是逻辑与,一个&是什么意思呢?
(2)model->facetnorms是结构体中的一个浮点型指针变量,对它进行取“非” 运算是什么意思?
(3)mode &= ~GLM_FLAT 这一句在书上没看到? 波浪线是什么运算符?&是什么运算符?

谢谢大侠了

[Quote=引用 4 楼 lianshaohua 的回复:]

就是几个宏定义
用宏直接替换代码中的宏就行了,至于什么意思,宏的名字已经告诉你了;
mode=GLM_SMOOTH|GLM_COLOR;//就是两个宏的“或”操作;
[/Quote]
ztenv 版主 2010-06-28
  • 打赏
  • 举报
回复
就是几个宏定义
用宏直接替换代码中的宏就行了,至于什么意思,宏的名字已经告诉你了;
mode=GLM_SMOOTH|GLM_COLOR;//就是两个宏的“或”操作;
lylm 2010-06-28
  • 打赏
  • 举报
回复
基础问题,去看看位运算和位操作部分
guoan4488 2010-06-28
  • 打赏
  • 举报
回复
就是跟我说说那几句语句是什么意思。
这几句:
#define GLM_FLAT (1<<0)
#define GLM_SMOOTH (1<<1)
#define GLM_COLOR (1<<3)

mode=GLM_SMOOTH|GLM_COLOR;
if (mode&GLM_FLAT&&!model->facetnorms)
{
mode &= ~GLM_FLAT;
}

谢谢了

[Quote=引用 1 楼 lianshaohua 的回复:]

什么问题?
[/Quote]
ztenv 版主 2010-06-28
  • 打赏
  • 举报
回复
什么问题?

64,650

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧