游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5163|回复: 10

谁能告诉我在OpenGL里怎么使用雾!!!先谢了

[复制链接]

5

主题

8

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2005-6-21 23:37:00 | 显示全部楼层 |阅读模式
我照着书上写的:代码是:

   glEnable(GL_FOG);

   {
      GLfloat fogColor[4] = {0.5, 0.0, 0.5, 1.0};

      fogMode = GL_EXP2;
          fogMode=GL_LINEAR;
      glFogi (GL_FOG_MODE, fogMode);
      glFogfv (GL_FOG_COLOR, fogColor);
      glFogf (GL_FOG_DENSITY, 10);
      glHint (GL_FOG_HINT, GL_DONT_CARE);
      glFogf (GL_FOG_START, 1.0);
      glFogf (GL_FOG_END, 15.0);
      //glClearColor(0.5, 0.5, 0.5, 1.0);  
   }

190

主题

1801

帖子

2096

积分

金牌会员

Rank: 6Rank: 6

积分
2096
QQ
发表于 2005-6-21 23:46:00 | 显示全部楼层

Re:谁能告诉我在OpenGL里怎么使用雾!!!先谢了

red book讲得很详细呀

101

主题

467

帖子

482

积分

中级会员

Rank: 3Rank: 3

积分
482
QQ
发表于 2005-6-22 07:08:00 | 显示全部楼层

Re:谁能告诉我在OpenGL里怎么使用雾!!!先谢了

代码不行吗?

101

主题

467

帖子

482

积分

中级会员

Rank: 3Rank: 3

积分
482
QQ
发表于 2005-6-22 07:08:00 | 显示全部楼层

Re:谁能告诉我在OpenGL里怎么使用雾!!!先谢了

不多你得在场景里放东西才行

190

主题

1801

帖子

2096

积分

金牌会员

Rank: 6Rank: 6

积分
2096
QQ
发表于 2005-6-22 13:25:00 | 显示全部楼层

Re:谁能告诉我在OpenGL里怎么使用雾!!!先谢了

没准是打错了
可以在www.opengl.org的 programming guide 的sample里找到例子代码

5

主题

8

帖子

8

积分

新手上路

Rank: 1

积分
8
 楼主| 发表于 2005-6-22 20:47:00 | 显示全部楼层

Re: 谁能告诉我在OpenGL里怎么使用雾!!!先谢了

场景中有几个球体,就看不到雾,所有的参数我都试过了,书上的代码就是这样的。谁有做好的例子给我一份,谢谢!!!

101

主题

467

帖子

482

积分

中级会员

Rank: 3Rank: 3

积分
482
QQ
发表于 2005-6-23 09:15:00 | 显示全部楼层

Re:谁能告诉我在OpenGL里怎么使用雾!!!先谢了

如果你有心学编程的话,一下简单的delphi代码应该看得懂的。

TFogStyle=(fsDeep,fsThick,fsThin);

  TFog=class(TVAEObject)
  private
  protected
    FEnable:Boolean;
    FStyle:TFogStyle;
    FAlpha:Byte;
    FColor:TColor;
    FFogNear:VExtended;
    FFogFar:VExtended;
    procedure SetEnable(Value:Boolean);
    procedure SetStyle(Value:TFogStyle);
    procedure SetFog;
    procedure SetAlpha(Value:Byte);
    procedure SetColor(Value:TColor);
    procedure SetFogNear(Value:VExtended);
    procedure SetFogFar(Value:VExtended);
  published
    constructor Create;
  public
    property Enable:Boolean read FEnable write SetEnable;
    property Style:TFogStyle read FStyle write SetStyle;
    property Alpha:Byte read FAlpha write SetAlpha;
    property Color:TColor read FColor write SetColor;
    property FogNear:VExtended read FFogNear write SetFogNear;
    property FogFar:VExtended read FFogFar write SetFogFar;
  end;

//******************************************************************************

procedure TFog.SetEnable(Value:Boolean);
begin
  FEnable:=Value;
  if FEnable then
    glEnable(GL_FOG)
  else
    glDisable(GL_FOG);
end;

procedure TFog.SetStyle(Value:TFogStyle);
begin
  FStyle:=Value;
  case FStyle of
    fsDeep:glFog(GL_FOG_MODE,GL_LINEAR);
    fsThick:glFog(GL_FOG_MODE,GL_EXP);
    fsThin:glFog(GL_FOG_MODE,GL_EXP2);
  end;
end;

procedure TFog.SetFog;
var C:TGLFloatArray4;
begin
  C[0]:=(FColor mod 256)/255;
  C[1]:=((FColor div 256)mod 256)/255;
  C[2]:=(FColor div 65536)/255;
  C[3]:=FAlpha/255;
  glFogfv(GL_FOG_COLOR,@C);
end;

procedure TFog.SetAlpha(Value:Byte);
begin
  FAlpha:=Value;
  SetFog;
end;

procedure TFog.SetColor(Value:TColor);
begin
  FColor:=Value;
  SetFog;
end;

procedure TFog.SetFogNear(Value:VExtended);
begin
  FFogNear:=Value;
  glFog(GL_FOG_START,FFogNear);
end;

procedure TFog.SetFogFar(Value:VExtended);
begin
  FFogFar:=Value;
  glFog(GL_FOG_END,FFogFar);
end;

constructor TFog.Create;
begin
  FEnable:=False;
  SetStyle(fsDeep);
  FAlpha:=255;
  FColor:=clWhite;
  SetFog;
  SetFogNear(50);
  SetFogFar(200);
end;


INITIALIZAION:
Fog:=TFog.Create;
  Fog.Enable:=True;
  Fog.Color:=clSkyBlue;
  Fog.FogNear:=100;
  Fog.FogFar:=600;

8

主题

65

帖子

65

积分

注册会员

Rank: 2

积分
65
发表于 2005-7-1 20:30:00 | 显示全部楼层

Re:谁能告诉我在OpenGL里怎么使用雾!!!先谢了

雾参数范围需要考虑好,如果过大则不会有效果的

2

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2005-7-27 20:30:00 | 显示全部楼层

Re:谁能告诉我在OpenGL里怎么使用雾!!!先谢了

fogColor[4] = {0.5, 0.0, 0.5, 1.0};
颜色不对
fogColor[4] = {0.5, 0.5, 0.5, 1.0};

5

主题

37

帖子

37

积分

注册会员

Rank: 2

积分
37
发表于 2006-2-14 10:56:00 | 显示全部楼层

Re:谁能告诉我在OpenGL里怎么使用雾!!!先谢了

support !
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-23 10:43

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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