游戏开发论坛

 找回密码
 立即注册
搜索
查看: 6425|回复: 2

glPushName和glLoadName的问题

[复制链接]

2

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2010-11-4 12:35:00 | 显示全部楼层 |阅读模式
书上说glLoadName函数的作用是替换堆栈顶部的那个值,glPushName函数是往名字堆栈中压入一个新的名字,那么比如下面的代码,调用了,glLoadName(0)后,再调用glLoadName(1),那么原先的在堆栈顶部的那个0不是就被1给替换掉了吗???这样怎么去识别用0命名的那个物体呢???求解。。。希望高手彻底讲些下着两个函数的区别
glLoadName( 0 );

glutWireSphere( 1.0, 15, 15 );

glLoadName( 1 );

glutWireCube( 1.5 );

glLoadName( 2 );

glutWireCone( 1.0, 1.5, 20, 20 );

glLoadName( 3 );

glutWireTorus( 0.5, 0.75, 20, 20 );

    还有就是宝典上的交互式图形那章,关于绘制卫星的那个程序,
glPushName(MOON1);
DrawSphere(5.0);
glPopName();
这个地方为什么要glPopName啊?????各种不理解望大虾指教

34

主题

844

帖子

1755

积分

金牌会员

Rank: 6Rank: 6

积分
1755
发表于 2010-11-4 16:19:00 | 显示全部楼层

Re:glPushName和glLoadName的问题

没用过这俩函数。
因为我不需要这俩函数。

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2010-11-5 00:09:00 | 显示全部楼层

Re:glPushName和glLoadName的问题

LoadName的作用就是设置一个渲染的标记,之后渲染的东西都会使用这个标记。代码里之后紧跟着就是绘制,所以你自然可以像上面这样调用了。
(具体关于这个标志,底层好像是用颜色值,拾取的时候获得这个颜色,然后转换为相应的name返回给上层,另外,在非Select模式下,这些函数都是无效的)

第二个,PushName和PopName肯定要成对使用。但关于LoadName和PushName/PopName各自的适用场合,确实太久没碰GL了,完全想不起来。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-5-30 11:14

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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