用opengl画一个玻璃效果的立方体

zogna 2008-08-18 09:22:08
最好有代码。
我是只能写出有融合效果的立方体,却没法透光。没玻璃那效果。。。
发至
gbaup_01@163.com


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

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

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

这样

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


...全文
952 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zogna 2008-08-27
  • 打赏
  • 举报
回复
用shader怎么做。我试了下3DSlab的GLSL Dome。里面有关于glass的shader代码。。可是我渲染了一次。。全是黑黑的。。。
zogna 2008-08-26
  • 打赏
  • 举报
回复
那窗户呀。。我看看。。好象没画玻璃上去
needallcodes 2008-08-26
  • 打赏
  • 举报
回复
本来就是个窗框...

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

那种亮晶晶的玻璃效果想都不要想了, 要想实现它,
你要自己计算至少一次光照,并把结果保存到一张纹理中,然后再融合
而且计算过程中的光照,实际并不一定是光照,而是另一张纹理,
说不清楚,你还是搜下文章吧, 基本上这样的效果要是不用shader会很慢,CPU不是专门算这个用的,你得把任务交给GPU
yale13 2008-08-25
  • 打赏
  • 举报
回复
opengl红宝书你有么?那个书的封皮就是一个窗户可以透到外面去看物体的~你去看看那本书上怎么实现那个效果的~
zogna 2008-08-24
  • 打赏
  • 举报
回复
可是这个不透光线哦~

那颜色我贴错代码了。。

needallcodes 2008-08-24
  • 打赏
  • 举报
回复
你是说要有光从另一侧投射过来的效果?
那你想办法用纹理来表现你的光效吧,只能想到这里了

我看用opengl直接提供的方法是不可能实现你说的效果的, 只能用4楼所说的那些技巧和算法
zogna 2008-08-23
  • 打赏
  • 举报
回复


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

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
  • 打赏
  • 举报
回复
glColor3f(0.3f, 1.0f, 0.3f);
这句没有alpha, 改下?
glColor4f(0.3f, 1.0f, 0.3f, 0.4f);

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

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

引力场变动源 2008-08-22
  • 打赏
  • 举报
回复
实现玻璃效果的话,简单的方法就是设置顶点的透明度,把顶点颜色中的alpha通道设为0~1之间的值(有些场合是0~255)就可以了。
如果需要逼真的玻璃效果的话,关键的是光照和材质之类的问题,模型之类的都是非常简单的。这方面可以找一下光线跟踪啊、环境映射啊、辐射度啊,之类的算法,不过那些就有些深奥了。
sunw8371 2008-08-20
  • 打赏
  • 举报
回复
试试glmaterialf 设置透明度
zogna 2008-08-20
  • 打赏
  • 举报
回复
麻烦呀。。。我要玻璃效果。。我把光源放在立方体中间了。还是不行
yale13 2008-08-19
  • 打赏
  • 举报
回复
绕z轴旋转是glTranslatef(0,0,1)函数~玻璃效果我就不会了,不过估计是设置环境光的问题,你去看看opengl关于光线设置方面

8,304

社区成员

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

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