游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2415|回复: 4

如何让OpenGL渲染出的场景能在彩色和黑白间切换

[复制链接]

17

主题

454

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2005-1-28 00:13:00 | 显示全部楼层 |阅读模式
如何让OpenGL渲染出的场景能在彩色和黑白间切换
前几个星期到一个游戏公司去看他们的游戏引擎,发现有一个很有意思的地方。 就是他们能把游戏画面调成黑白的。当时我的第一反应是用Pixel Shader做PerPixel的计算,但是又总觉得不方便.今天偶然想起OpenGL里还有一个Matrix Mode叫GL_COLOR.所以,我们只要简单的加上以下代码,立刻就可以让渲染出来的图象成为黑白的.
  glMatrixMode(GL_COLOR);
  GLfloat colorMat[16]=
  {
       0.3f,0.3f,0.3f,0.0f,
    0.5f,0.5f,0.5f,0.0f,
    0.2f,0.2f,0.2f,0.0f,
    0.0f,0.0f,0.0f,3.3f,
  };
  glLoadMatrixf(colorMat);
  glMatrixMode(GL_MODELVIEW);

代码超级简单.只是不知道为什么,我的场景有些地方画出来的地方还是彩色的。但是基本的地方都是黑白的了(加了纹理的).回头再仔细看看.

图片在这里,只发了黑白版本的。没发彩色的。http://xreal.51.net/Game/Heibai.jpg

>>别告诉我说图象的颜色不对,我都忘记把彩色转成黑白的公式了。随便用了一个。。。。累,睡觉ing

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2005-1-28 09:22:00 | 显示全部楼层

Re:如何让OpenGL渲染出的场景能在彩色和黑白间切换

彩色转黑白最保险的公式是:
a = (r + g + b) / 3;
r = a;
g = a;
b = a;

另外还有一个直接乘几个浮点数的,那个方法不太保险。
个人觉得还是用pixel shader写保险。。。:(

17

主题

454

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
 楼主| 发表于 2005-1-28 09:42:00 | 显示全部楼层

Re:如何让OpenGL渲染出的场景能在彩色和黑白间切换

a = (r + g + b) / 3;出来的严重是镇

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2005-1-28 09:48:00 | 显示全部楼层

Re:如何让OpenGL渲染出的场景能在彩色和黑白间切换

。。。。。我感觉还好啊,我从2D图象处理转灰度就一直用的这个方法,没觉得效果不好。

20

主题

473

帖子

502

积分

高级会员

Rank: 4

积分
502
发表于 2005-1-28 10:07:00 | 显示全部楼层

Re:如何让OpenGL渲染出的场景能在彩色和黑白间切换

gray=r*0.3+g*0.59+b*0.11
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-24 05:11

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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