首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 用opengl画一个玻璃效果的立方体 [已结帖,结帖人:zogna]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zogna
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-08-18 21:22:08 楼主
    最好有代码。
    我是只能写出有融合效果的立方体,却没法透光。没玻璃那效果。。。
    发至
    gbaup_01@163.com


    还有。我想让位置光源绕Z轴旋转。。。不知道怎么转。。。

    pos={0,0,20,1.0};

    旋转(角度,0,0,1);
    glLIGHT(GL_POS,pos);
    glEN(LIGHT0);

    这样

    还是什么的。。。。不清楚。。最好示范下。。


    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yale13
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 09:18:391楼 得分:0
    绕z轴旋转是glTranslatef(0,0,1)函数~玻璃效果我就不会了,不过估计是设置环境光的问题,你去看看opengl关于光线设置方面
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zogna
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 13:09:532楼 得分:0
    麻烦呀。。。我要玻璃效果。。我把光源放在立方体中间了。还是不行
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sunw8371
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 21:05:193楼 得分:10
    试试glmaterialf 设置透明度
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Silenker
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 19:25:144楼 得分:50
    实现玻璃效果的话,简单的方法就是设置顶点的透明度,把顶点颜色中的alpha通道设为0~1之间的值(有些场合是0~255)就可以了。
    如果需要逼真的玻璃效果的话,关键的是光照和材质之类的问题,模型之类的都是非常简单的。这方面可以找一下光线跟踪啊、环境映射啊、辐射度啊,之类的算法,不过那些就有些深奥了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zogna
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 08:36:135楼 得分:0


    下面这样能做出玻璃效果吗?
    我这代码还要改什么?

    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
                 
    glEnable(GL_COLOR_MATERIAL);

    GLfloat ambientColor[] = {0.4f, 0.4f, 0.4f, 1.0f};
    GLfloat lightColor0[] = {0.6f, 0.6f, 0.6f, 1.0f};
    GLfloat lightPos0[] = {0.0f, 0.0f, 10.0f, 0.0f};
    glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientColor);


    glLightfv(GL_LIGHT0, GL_DIFFUSE, lightColor0);
    glLightfv(GL_LIGHT0, GL_POSITION, lightPos0);
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);


    glColor3f(0.3f, 1.0f, 0.3f);
    画立方体
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • needallcodes
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 16:56:376楼 得分:10
    glColor3f(0.3f, 1.0f, 0.3f);
    这句没有alpha, 改下?
    glColor4f(0.3f, 1.0f, 0.3f, 0.4f);

    我试了下,一般的效果就是这样了

    想要更真实些的,哪就得像4楼的兄弟说的方法了, 那个基本上是数学

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zogna
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-24 09:40:217楼 得分:0
    可是这个不透光线哦~

    那颜色我贴错代码了。。

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • needallcodes
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-24 14:19:168楼 得分:10
    你是说要有光从另一侧投射过来的效果?
    那你想办法用纹理来表现你的光效吧,只能想到这里了

    我看用opengl直接提供的方法是不可能实现你说的效果的, 只能用4楼所说的那些技巧和算法
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yale13
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-25 10:31:059楼 得分:10
    opengl红宝书你有么?那个书的封皮就是一个窗户可以透到外面去看物体的~你去看看那本书上怎么实现那个效果的~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zogna
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-26 07:19:5610楼 得分:0
    那窗户呀。。我看看。。好象没画玻璃上去
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • needallcodes
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-26 15:01:4711楼 得分:10
    本来就是个窗框...

    我又想了想, 试试打开辐射光效果满意不, 记得好像叫emission什么的

    那种亮晶晶的玻璃效果想都不要想了, 要想实现它,
    你要自己计算至少一次光照,并把结果保存到一张纹理中,然后再融合
    而且计算过程中的光照,实际并不一定是光照,而是另一张纹理,
    说不清楚,你还是搜下文章吧, 基本上这样的效果要是不用shader会很慢,CPU不是专门算这个用的,你得把任务交给GPU
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zogna
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-27 08:08:3012楼 得分:0
    用shader怎么做。我试了下3DSlab的GLSL Dome。里面有关于glass的shader代码。。可是我渲染了一次。。全是黑黑的。。。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved