游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4344|回复: 6

怎样用opengl渲染灰度的图象

[复制链接]

7

主题

10

帖子

12

积分

新手上路

Rank: 1

积分
12
QQ
发表于 2006-7-6 20:33:00 | 显示全部楼层 |阅读模式
如题,使opengl渲染出来的图象为灰度(黑白)的,还有就是从彩色到黑白的过度。dx里面有一个控制gamma的函数,不过是全屏的。不知道opengl里面有没有相关的函数。opengl的shader我不懂,听人说可以用这个实现。
以前见有人用颜色矩阵模式改变显示的:
glMatrixMode(GL_COLOR)
...
但是opengl里面好象没有这一说,矩阵模式里没有GL_COLOR的。大家有没有办法?

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2006-7-6 23:38:00 | 显示全部楼层

Re:怎样用opengl渲染灰度的图象

[Fragment shader]

uniform sampler2D testTexture;

void main( void )
{
    vec4 texelColor = texture2D( testTexture, gl_TexCoord[0].xy );

    float lum=dot(texelColor.rgb,vec3(0.3,0.59,0.11));

    gl_FragColor = vec4( lum,lum,lum,gl_Color.a*texelColor.a);
}

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2006-7-7 08:31:00 | 显示全部楼层

没有GL_COLOR

我刚才搜索过GL.H文件里,没找到.
应该没有.

18

主题

971

帖子

982

积分

高级会员

Rank: 4

积分
982
发表于 2006-7-7 13:31:00 | 显示全部楼层

Re:怎样用opengl渲染灰度的图象

2楼正解.
另外,dx里的gamma函数是用来控制亮度的...

7

主题

10

帖子

12

积分

新手上路

Rank: 1

积分
12
QQ
 楼主| 发表于 2006-7-7 20:24:00 | 显示全部楼层

Re:怎样用opengl渲染灰度的图象

你的代码不懂啊,研究

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2006-7-8 10:17:00 | 显示全部楼层

Re:怎样用opengl渲染灰度的图象

黑白事实上就是色彩的亮度,Brightness = R*0.2125 + G*0.7154 + B*0.0721,所以用Vector(R,G,B) dot Vector(0.2125, 0.7154, 0.0721)就可以了,OGL里面用颜色矩阵也是一样的道理,目的就是给一个像上面一样的线性运算

2

主题

182

帖子

182

积分

注册会员

Rank: 2

积分
182
发表于 2006-7-8 15:48:00 | 显示全部楼层

Re:怎样用opengl渲染灰度的图象

Texture Env Dot3 Combine  的扩展就可以实现。 这个基本上所有的GL版本都支持。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-24 21:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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