"월드"(법선 포함)에 특정 큐브 모델과 랜턴 모델이 있고 특정 좌표에 배치 된 광원이 있습니다. 문제는 모델 주위를 이동하려고 할 때마다 광원의 위치가 모든 프레임을 뷰포트 위치로 변경합니다. 내가 몇 가지 비슷한 문제를 보았다 그러나 그들의 솔루션은 나를 전혀 도움이되지 않았다(세계 좌표로) LWJGL의 조명 위치가 고정 되었습니까?
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glShadeModel(GL11.GL_SMOOTH);
GL11.glClearDepth(1.0f);
GL11.glClearColor(0.0f, 0.75f, 1.0f, 1);
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glEnable(GL11.GL_BLEND);
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glDepthFunc(GL11.GL_LESS);
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glHint(GL11.GL_PERSPECTIVE_CORRECTION_HINT, GL11.GL_NICEST);
ByteBuffer temp = ByteBuffer.allocateDirect(16);
temp.order(ByteOrder.nativeOrder());
byf = temp;
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.glEnable(GL11.GL_LIGHT1);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glLoadIdentity();
GL11.glFogi(GL11.GL_FOG_MODE, fogMode[fogfilter]);
temp.asFloatBuffer().put(fogColor).flip();
GL11.glFog(GL11.GL_FOG_COLOR, temp.asFloatBuffer());
GL11.glFogf(GL11.GL_FOG_DENSITY, 0.35f);
GL11.glHint(GL11.GL_FOG_HINT, GL11.GL_DONT_CARE);
GL11.glFogf(GL11.GL_FOG_START, 1.0f);
GL11.glFogf(GL11.GL_FOG_END, 5.0f);
GL11.glEnable(GL11.GL_FOG);
: 여기에 조명 초기화를 포함하는 코드의 내 초기화 부분이다. 문제는 Matrixes를 설정하는 순서가 불규칙하다는 것입니다. 그러나 어떤 매트릭스 (Matrix)와 어디에서 변경해야하는지 모릅니다. 조명 초기화 전에 Modelview 매트릭스를 설정하려고했지만 나에게 적합하지 않았습니다.
그건 그렇고, 모든 프레임에서 정확한 조명 위치를 설정하고 싶지는 않지만 저에게는 효과적이지만 렌더링 속도가 느려질 수 있습니다.
이 답변은 약간의 조각입니다. 조금 더 많은 문맥을 추가하십시오. –