游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3137|回复: 7

OpenGL的纹理定义问题

[复制链接]

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2005-11-23 22:43:00 | 显示全部楼层 |阅读模式
AUX_RGBImageRec *TextureImage[1];
为什么TextureImage[1]前面要有个 *  呢?
这个“*”是干什么的?
为什么一定是*TextureImage[1]????

不解。

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2005-11-24 16:33:00 | 显示全部楼层

Re:OpenGL的纹理定义问题

可能是函数指针

24

主题

256

帖子

267

积分

中级会员

Rank: 3Rank: 3

积分
267
发表于 2005-11-25 08:52:00 | 显示全部楼层

Re:OpenGL的纹理定义问题

为什么一定是*TextureImage[1]????

///////////////////////////////////////////////////////////////////////
这是不一定的,用什么名字都可以,如可只有一个纹理,不用数组也可以
AUX_RGBImageRec *pImage = NULL;

// Load the bitmap using the aux function stored in glaux.lib
pImage = auxDIBImageLoad(Filename);

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
 楼主| 发表于 2005-11-25 13:22:00 | 显示全部楼层

Re:OpenGL的纹理定义问题

为什么不可以如下定义?

AUX_RGBImageRec TextureImage[1];
TextureImage[0]=auxDIBImageLoad("Data/NeHe.bmp");

出错,因为没有 * 号。
应该怎么解释?

24

主题

256

帖子

267

积分

中级会员

Rank: 3Rank: 3

积分
267
发表于 2005-11-25 14:40:00 | 显示全部楼层

Re:OpenGL的纹理定义问题

为什么不可以如下定义?

AUX_RGBImageRec TextureImage[1];
TextureImage[0]=auxDIBImageLoad("Data/NeHe.bmp");

出错,因为没有 * 号。
应该怎么解释?

//=============================================
也不知你这个“高级战士”是怎么混出来的。回去学一学什么叫指针吧。

如果你硬是要这样用,可以这样做:
AUX_RGBImageRec TextureImage[1];
TextureImage[0]= * auxDIBImageLoad("Data/NeHe.bmp");        //结构体赋值

后面的调用如:TextureImage[0].data;

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
 楼主| 发表于 2005-11-25 20:38:00 | 显示全部楼层

Re:OpenGL的纹理定义问题

7楼回答的不是我要问的。

我在问,“为什么要用指针来定义”?
①TextureImage[0] 是一个图片
②auxDIBImageLoad("Data/NeHe.bmp") 也是一个图片

为什么“一个是图片,而另一个非得是 指针 ”?

13

主题

55

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2005-11-25 21:02:00 | 显示全部楼层

Re:OpenGL的纹理定义问题

我想你问的问题是,为什么要加上*而且返回的也要是地址而不是实际的数据

因为数据很大,如果每次返回的是数据那么数据BMP都将被COPY一次,很浪费时间与内存

所以要返回指针

至于不清楚了话还是去重新复习一下C++ Primer

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
 楼主| 发表于 2005-11-25 22:44:00 | 显示全部楼层

Re:OpenGL的纹理定义问题

我不喜欢复杂。定义一个纹理,还得先弄一个地址,再... ...麻烦
不能直接定义吗?

glTexImage2D(GL_TEXTURE_2D, 0, 3, 128, 128, 0, GL_RGB, GL_UNSIGNED_BYTE, auxDIBImageLoad("Data/hand.bmp"));

直接从一个文件创建一个纹理。反正我也只用一个纹理。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 18:15

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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