我要发帖 回复

正式会员

4

主题

31

积分

0

专家分

:

私信
发表时间 : 2008-5-20 11:53:03 | 浏览 : 1768    评论 : 3
OpenGL中每一个灯光都通过一个GL_LIGHT@ 来表示,假如我想通过程序来自动的标识每一个灯光的GL_LIGHT@应该怎么做呢?

也就是说写了一个类
[cpp]class Light{
     void Draw(){
             glEnable(GL_LIGHT@)
     }
}[/cpp]

每一次生成一个对象的时候,怎么确定那个GL_LIGHT@的@呢?

宏定义?还是什么?

最近VR访客

tan_dunming 评论于2008-5-20 14:42:14
GL_LIGHT@是gl.h中定义的常量
/* LightName */
#define GL_LIGHT0                         0x4000
#define GL_LIGHT1                         0x4001
#define GL_LIGHT2                         0x4002
#define GL_LIGHT3                         0x4003
#define GL_LIGHT4                         0x4004
#define GL_LIGHT5                         0x4005
#define GL_LIGHT6                         0x4006
#define GL_LIGHT7                         0x4007

能不能通过这些常量来判断呢?
追求卓越
Eniak 评论于2008-5-20 21:55:49
怎么说呢,对一个灯进行控制是要通过 GL_LIGHT@来索引的,比如环境光什么的,但是要做成一个对象后,比如有多个灯光,每个灯光要知道自己是哪个GL_LIGHI@,比如第一个灯光对应着GL_LIGHT0,可是地而个灯光怎么知道他是GL_LIGHT1呢?,虽然你可以通过一个计数器来确定下一个GL_LIGHT@,但是在8个都用过之后,你怎么解决动态的宏定义呢?
tan_dunming 评论于2008-5-21 12:42:44
GL_LIGHT@ - GL_LIGHT0 不就知道是第几个灯光了吗? 用第几个灯光 只需要GL_LIGHT0 + i 就可以了

不知道你说的是不是这个意思? 什么动态的宏定义不明白
追求卓越

手机版|VR开发网 统计 津ICP备18009691号
网安备12019202000257

GMT+8, 2021-6-16 07:34 PM

返回顶部