游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2758|回复: 2

基于MFC单文档的GLSL第一课:灯光与材质

[复制链接]

5

主题

10

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2006-5-28 23:45:00 | 显示全部楼层 |阅读模式
本课基本步骤如下:
1.用MFC建立单文档
2.架设GL图形绘制环境
3.设定shader渲染器
4.设定灯光与材质
//vertex shader如下:
varying vec4 diffuse,ambient;
varying vec3 normal,lightDir,halfVector;
void main()
{       
        normal = normalize(gl_NormalMatrix * gl_Normal);
        lightDir = normalize(vec3(gl_LightSource[0].position));
        halfVector = normalize(gl_LightSource[0].halfVector.xyz);
        diffuse = gl_FrontMaterial.diffuse * gl_LightSource[0].diffuse;
        ambient = gl_FrontMaterial.ambient * gl_LightSource[0].ambient;
        ambient += gl_LightModel.ambient * gl_FrontMaterial.ambient;
        gl_Position = ftransform();

}
//fragment shader如下:
varying vec4 diffuse,ambient;
varying vec3 normal,lightDir,halfVector;
void main()
{
        vec3 n,halfV,viewV,ldir;
        float NdotL,NdotHV;
        vec4 color = ambient;
        n = normalize(normal);
        NdotL = max(dot(n,lightDir),0.0);
        if (NdotL > 0.0) {
                halfV = normalize(halfVector);
                NdotHV = max(dot(n,halfV),0.0);
                color += gl_FrontMaterial.specular * gl_LightSource[0].specular * pow(NdotHV,gl_FrontMaterial.shininess);
                color += diffuse * NdotL;
        }
        gl_FragColor = color;
}

说明显卡要求支持shader如:AGP 9550
效果图如下:


sf_200652823451.jpg

54

主题

2916

帖子

3765

积分

论坛元老

Rank: 8Rank: 8

积分
3765
QQ
发表于 2006-5-29 19:26:00 | 显示全部楼层

Re:基于MFC单文档的GLSL第一课:灯光与材质

象这种固定管线就拥有的功能,用Shade重写一遍总觉得不值、、、。

2

主题

53

帖子

65

积分

注册会员

Rank: 2

积分
65
发表于 2006-6-1 09:25:00 | 显示全部楼层

Re:基于MFC单文档的GLSL第一课:灯光与材质

有教育意义吧。。。支持
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-24 15:31

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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