首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓OpenGL天窗灯不能正常工作

安卓OpenGL天窗灯不能正常工作
EN

Stack Overflow用户
提问于 2011-10-21 17:12:13
回答 1查看 1.1K关注 0票数 0

好的,我做了一个“天窗”(实际上是5平面,因为不同的纹理)。很好,但是闪电有问题。这不是我在OpenGL中最强烈的观点,所以如果答案不是那么难的话,我也不会感到惊讶。

这就是我的起始位置视图。正如你所看到的,前面的平面是明亮的,但左,上,右并不是真的,在它们和前面之间有一条边界。

http://img696.imageshack.us/img696/3673/light01.png

当我到达天窗的绝对中心(几乎)时,边框就不那么明显了(我猜在绝对中心没有边框。)

http://img233.imageshack.us/img233/2949/light02.png

首先,我尝试用一盏灯在位置(0,0,0)设置这些设置,但什么也没有,我试图改变环境,漫射,但没有真正的帮助:

代码语言:javascript
复制
    private float[] lightAmbient = {0.5f, 0.5f, 0.5f, 1.0f};
    private float[] lightDiffuse = {1.0f, 1.0f, 1.0f, 1.0f};
    private float[] lightPosition = {0.0f, 0.0f, 0.0f, 1.0f};

    public void onSurfaceCreated(GL10 gl, EGLConfig config) {
            gl.glEnable(GL10.GL_DITHER);
            gl.glEnable(GL10.GL_TEXTURE_2D);
            gl.glShadeModel(GL10.GL_SMOOTH);
            gl.glClearColor(0, 0, 0, 0);

            gl.glClearDepthf(1.0f);
            gl.glEnable(GL10.GL_DEPTH_TEST);
            gl.glDepthFunc(GL10.GL_LEQUAL);
            gl.glEnable(GL10.GL_LIGHT0);
            gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);
            gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_AMBIENT, lightAmbientBuffer);
            gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_DIFFUSE, lightDiffuseBuffer);
            gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_POSITION, lightPositionBuffer);
    }

    public void onDrawFrame(GL10 gl) {
            gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
            gl.glLoadIdentity();
            gl.glEnable(GL10.GL_LIGHTING);

            GLU.gluLookAt(gl, eyeX, eyeY, eyeZ, centerX, centerY, centerZ, 0.0f, 1.0f, 0.0f);
    }

    public void onSurfaceChanged(GL10 gl, int width, int height) {
            if(height == 0) {
                height = 1;                         
            }

            gl.glViewport(0, 0, width, height);
            gl.glMatrixMode(GL10.GL_PROJECTION);
            gl.glLoadIdentity();
            GLU.gluPerspective(gl, 65.0f, (float)width / (float)height, 1.0f, 80.0f);
            gl.glMatrixMode(GL10.GL_MODELVIEW);
            gl.glLoadIdentity();
    }

所以问题是我怎样才能让它在我所处的每一个地方发挥作用我希望有人能帮我,因为现在它看起来并不好看(没有光是好的,但我真的不想要一个夜晚的场景,特别是有太阳的纹理:)。

编辑(它现在是如何工作的):就像它在回答中一样,天空框已经没有法线了,但是在我启用了闪电之后,我需要将这一行添加到代码中,现在它工作起来就像一种魅力,天空到处都是明亮的。

代码语言:javascript
复制
    gl.glLightModelf(GL10.GL_LIGHT_MODEL_TWO_SIDE, GL10.GL_TRUE);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-22 09:48:17

答案其实并不难,你根本不应该在你的天窗上使用灯光。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7852872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档