熟悉OPENGL 和 体积阴影的请进来帮帮忙

ZeuX 2003-10-17 03:33:16
我在学习做一个体积阴影, 按照Nehe的Lesson27的例子进行修改.我新建了一个工程, 做了如下的一个函数来在模板缓存中标识阴影区域.
/// 渲染阴影
BOOL RenderShadow()
{
glClearStencil(0);
glClear(GL_STENCIL_BUFFER_BIT);

glDisable(GL_LIGHTING);
glDepthMask(GL_FALSE);
glDepthFunc(GL_LEQUAL);
glEnable(GL_STENCIL_TEST);
glColorMask(0, 0, 0, 0);
glStencilFunc(GL_ALWAYS, 1, 0xffffffff);

/*
//......标识体积阴影区域的过程
*/

glFrontFace(GL_CCW);
glColorMask(1, 1, 1, 1);

glColor4f(0.0f, 0.0f, 0.0f, 0.4f);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glStencilFunc(GL_NOTEQUAL, 0, 0xffffffff);
glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
glPushMatrix();
glLoadIdentity();
glBegin(GL_TRIANGLE_STRIP);
glVertex3d(-1.0f, 1.0f, -1.0f);
glVertex3d(-1.0f,-1.0f, -1.0f);
glVertex3d( 1.0f, 1.0f, -1.0f);
glVertex3d( 1.0f,-1.0f, -1.0f);
glEnd();
glPopMatrix();
glDisable(GL_BLEND);

glDepthFunc(GL_LEQUAL);
glDepthMask(GL_TRUE);
glEnable(GL_LIGHTING);
glDisable(GL_STENCIL_TEST);
glShadeModel(GL_SMOOTH);

return TRUE;
}

上面一段代码里面我把标识体积阴影的部分去掉, 那么模板缓存的值应该一直保持清除后的0值, 那么在后面绘制阴影的时候应该是因为所有的点的模板缓存值为零而不进行绘制, 可是我绘制的时候却把整个视区的场景都加上了一层阴影色

另外, 我运行Nehe的lesson27的时候在窗口模式时速度非常的慢, 但是全屏模式却很快, 是不是根显卡的加速有关

望高手指教一二, 不胜感激...
...全文
96 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

8,301

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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