游戏开发论坛

 找回密码
 立即注册
搜索
查看: 7561|回复: 0

OpenGL 颜色纹理与深度纹理的问题

[复制链接]

1

主题

4

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2012-10-5 11:47:00 | 显示全部楼层 |阅读模式
已知OpenGL之中,颜色纹理支持多重纹理,用glActiveTexture()函数进行纹理单元之间的切换。但是如果我需要同时进行颜色纹理与深度纹理之间的映射的话,那该怎么处理呢。
比如:我想绘制一个物体,并且在绘制时启动第一层的纹理自动生成,于是我可以写如下的代码:
glActiveTexture(GL_TEXTURE0);

glBindTexture(GL_TEXTURE_2D,color_texture);


glEnable(GL_TEXTURE_2D);
glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULAT);

glEnable(GL_TEXTURE_GEN_S);
glTexGeni(GL_S,GL_TEXTURE_GEN_MODE,GL_OBJECT_LINEAR);
glTexGenfv(GL_S,GL_OBJECT_PLANE,plane_s);

glEnable(GL_TEXTURE_GEN_T);
glTexGeni(GL_T,GL_TEXTURE_GEN_MODE,GL_OBJECT_LINEAR);
glTexGenfv(GL_T,GL_OBJECT_PLANE,plane_t);

//下面我要设置深度纹理的纹理坐标自动生成
//下面的代码正确吗?

glBindTexture(GL_TEXTURE_2D,depth_texture);

glEnable(GL_TEXTURE_2D);
glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_REPLACE);

glEnable(GL_TEXTURE_GEN_S);
glTexGeni(GL_S,GL_TEXTURE_GEN_MODE,GL_EYE_LINEAR);
glTexGenfv(GL_S,GL_EYE_PLANE,depth_plane_s);

glEnable(GL_TEXTURE_GEN_T);
glTexGeni(GL_T,GL_TEXTURE_GEN_MODE,GL_EYE_LINEAR);
glTexGenfv(GL_S,GL_EYE_PLANE,depth_plane_t);

glEnable(GL_TEXTURE_GEN_R);
glTexGeni(GL_R,GL_TEXTURE_GEN_MODE,GL_EYE_PLANE);
glTexGenfv(GL_R,GL_EYE_PLANE,depth_plane_r);

glEnable(GL_TEXTURE_GEN_Q);
glTexGeni(GL_Q,GL_TEXTURE_GEN_MODE,GL_EYE_PLANE);
glTexGenfv(GL_Q,GL_EYE_PLANE,depth_plane_q);

//进行场景的绘制
//下面是关闭的代码
glBindTexture(GL_TEXTURE_2D,depth_texture);
glDisable(GL_TEXTURE_GEN_Q);
glDisable(GL_TEXTURE_GEN_R);
glDisable(GL_TEXTURE_GEN_T);
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_2D);

glBindTexture(GL_TEXTURE_2D,color_texture);
glDisable(GL_TEXTURE_GEN_T);
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_2D);

上面的代码在同时生成第一个纹理单元的颜色纹理与深度纹理方面有错误吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-2-27 13:25

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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