游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3291|回复: 9

一个新手的问题?请各位大哥帮忙

[复制链接]

11

主题

17

帖子

23

积分

注册会员

Rank: 2

积分
23
发表于 2004-10-13 10:59:00 | 显示全部楼层 |阅读模式
我用3DMAX建模了一个房子,用OPENGL读出来,可是显示的时候房子的墙是透明的,请问怎么设置,房子的墙不是透明的

0

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2004-10-13 12:52:00 | 显示全部楼层

Re:一个新手的问题?请各位大哥帮忙

你要看看你的程序中是否??⒘送该髟O置

比如看看是否又出?glEnable(GL_BLEND);glBlendFunc( .. , ..);?是?置混合用的.假如有那?用glDisable(GL_BLEND)?置??混合, 如果不是??????那?,你最好能?出代??砜纯?

普通默??境中??是不??该鞯?

11

主题

17

帖子

23

积分

注册会员

Rank: 2

积分
23
 楼主| 发表于 2004-10-14 13:00:00 | 显示全部楼层

Re:一个新手的问题?请各位大哥帮忙

void COpenGL::Init(GLvoid)
{
        m_3dsLoaded  = FALSE;

        camPos[0]         = 0.0f;
        camPos[1]         = 0.0f;
        camPos[2]         = -100.0f;
        camRot[0]         = 20.0f;
        camRot[1]         = -20.0f;
        camRot[2]         = 0.0f;


        m_triList.Init();
       
        ::glShadeModel(GL_FLAT);
       
        ::glClearColor(0.0F, 0.0F, 0.0F, 0.0F);
       
        ::glClearDepth(1.0F);

        ::glEnable(GL_DEPTH_TEST);

        ::glEnable(GL_CULL_FACE);

        GLfloat ambientLight[] = { 0.3f, 0.3f, 0.3f, 1.0f};
        GLfloat diffuseLight[] = { 0.7f, 0.7f, 0.7f, 1.0f};
        GLfloat lightPos[]     = {6000.0f,6000.0f,6000.0f, 1.0f};

        glLightfv(GL_LIGHT0, GL_AMBIENT, ambientLight);
        glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseLight);
        glLightfv(GL_LIGHT0, GL_POSITION, lightPos);
        glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientLight);
       
        glEnable(GL_COLOR_MATERIAL);
        glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
        glEnable(GL_LIGHTING);
        glEnable(GL_LIGHT0);
        OpenFile("A3DPLNT1.3DS");
}

11

主题

17

帖子

23

积分

注册会员

Rank: 2

积分
23
 楼主| 发表于 2004-10-14 13:08:00 | 显示全部楼层

Re:一个新手的问题?请各位大哥帮忙

还是透明的

9

主题

151

帖子

153

积分

注册会员

Rank: 2

积分
153
发表于 2004-10-14 14:41:00 | 显示全部楼层

Re:一个新手的问题?请各位大哥帮忙

你这样:
glFrontFace(GL_CW)试下……

9

主题

151

帖子

153

积分

注册会员

Rank: 2

积分
153
发表于 2004-10-14 14:42:00 | 显示全部楼层

Re:一个新手的问题?请各位大哥帮忙

还有你要注意:
3DS里的轴和OPENGL里的轴方向不太一样,你自己打开3DS MAX看下就知道了……
樱手上没电脑,给你说不清

11

主题

17

帖子

23

积分

注册会员

Rank: 2

积分
23
 楼主| 发表于 2004-10-14 14:58:00 | 显示全部楼层

Re:一个新手的问题?请各位大哥帮忙

用glFrontFace(GL_CW)好了,谢谢,这个涵书是什么意思?能告诉我吗?还有一个问题,想请叫你,同一个3DS文件,在两个不同的程序输入,用glScalef改边大小,可是两个程序中此涵数的参数不一样,比如glScalef(0.4,0.4,0.4);和glScalef(0.01,0.01,0.01);但是显示出来的大小差不多,为什么?

139

主题

2005

帖子

2057

积分

金牌会员

Rank: 6Rank: 6

积分
2057
QQ
发表于 2004-10-14 15:52:00 | 显示全部楼层

Re:一个新手的问题?请各位大哥帮忙

后一个问题我已经回答。
glFrontFace是设置多边形的边的绕法的。
CW是顺时针,CCW是反时针(默认)。
3DS的面的边顺序有点变态,不但轴跟OPENGL不太一样,而且绕法有时候也会有问题。虽然他们都是右手系……

http://www.buaaer.cn/X_AdvCom_Get.asp?UserID=1837

139

主题

2005

帖子

2057

积分

金牌会员

Rank: 6Rank: 6

积分
2057
QQ
发表于 2004-10-14 15:53:00 | 显示全部楼层

Re:一个新手的问题?请各位大哥帮忙

忘了说了……我是CPP……
图形水平没有樱高……不敢出来败坏他的名声呀……

http://www.buaaer.cn/X_AdvCom_Get.asp?UserID=1837

0

主题

7

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2004-10-16 11:37:00 | 显示全部楼层

Re:一个新手的问题?请各位大哥帮忙

♂樱♀说得很对,
补充一点:
glFrontFace是设置多边形的边的绕法的,多边形的顶点是顺时针还是逆时针决定了多边形的面的法线方向,OpenGL根据法线方向和光源的方向计算面上各点的光照值,所以如果法线方向反了,光源照不到,当然这个面就没有了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-22 19:36

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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