如何在openGL中制作一个光球?

Wil*_*iam 6 c++ java opengl lighting

我正在尝试制作一个光球(像太阳一样),但我似乎根本无法看到它.我会给你一些代码snipets.它在Java LWJGL中,所以它可能看起来有点不同.

private float lightAmbient[] = { 0.0f, 1.0f, 1.0f, 1.0f };  // Ambient Light Values ( NEW )
    private float lightDiffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };      // Diffuse Light Values ( NEW )
    private float lightPosition[] = { 0.0f, 0.0f, -5.0f, 1.0f }; // Light Position ( NEW )
    float lightSpecular[] = { 0f, 0f, 0.5f, 1.0f };  // highlight
Run Code Online (Sandbox Code Playgroud)

ByteBuffer temp = ByteBuffer.allocateDirect(16);
        temp.order(ByteOrder.nativeOrder());
        GL11.glLight(GL11.GL_LIGHT1, GL11.GL_AMBIENT, (FloatBuffer)temp.asFloatBuffer().put(lightAmbient).flip());              // Setup The Ambient Light
        GL11.glLight(GL11.GL_LIGHT1, GL11.GL_DIFFUSE, (FloatBuffer)temp.asFloatBuffer().put(lightDiffuse).flip());              // Setup The Diffuse Light
        GL11.glLight(GL11.GL_LIGHT1, GL11.GL_POSITION,(FloatBuffer)temp.asFloatBuffer().put(lightPosition).flip());         // Position The Light
        GL11.glLight(GL11.GL_LIGHT1, GL11.GL_SPECULAR,(FloatBuffer)temp.asFloatBuffer().put(lightSpecular).flip());         // Position The Light

        GL11.glEnable(GL11.GL_LIGHT1); 
Run Code Online (Sandbox Code Playgroud)

我还需要做些什么来使灯光可见?

Fra*_*ger 7

灯永远不可见.

但是,它们对其他物体的材料有影响.因此,场景中的所有对象都设置了适当的材质属性非常重要.

您可能对本文感兴趣,该文章提到了在尝试照亮场景时所犯的所有常见错误.

替代文字

您将需要查找glColorMaterial函数,因为它们是设置材质属性的最简单方法.