Как я могу сделать шар света в openGL?

Я пытаюсь сделать шар света (Как солнце), но я, может казаться, не делаю его видимым вообще. Я дам Вам некоторые отрывки кода, который я имею. Это находится в 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

и

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); 

Что еще я должен сделать для создания света видимым?

6
задан William 28 December 2009 в 04:09
поделиться

3 ответа

Свет никогда не виден.

Однако, их влияние на материалы других объектов не видно. Поэтому важно, чтобы все объекты на сцене имели соответствующий набор свойств материала.

Вас может заинтересовать эта статья, в которой упоминаются все распространенные ошибки, которые допускаются при попытке осветить сцену.

alt text

Вы захотите просмотреть функции glColorMaterial, так как они являются самым простым способом установки свойств материала.

.
7
ответ дан 9 December 2019 в 22:35
поделиться

Как сказал Фрэнк, свет невидим, он просто используется в качестве входа в уравнение освещения, используемое системой рендеринга (hardware/software) для вычисления конечных цветов геометрии.

Если вы хотите, чтобы что-то выглядело как свет, вам нужно подражать эффектам, которые вы привыкли видеть, глядя на яркий источник света. Для солнца одним из наиболее заметных эффектов является световое расцветение.

Для получения информации о генерации светового расцвета прочтите это OpenGL Bloom Tutorial, и вот некоторые примеры кода на Java, использующие GLSL для генерации эффекта цветения.

.
2
ответ дан 9 December 2019 в 22:35
поделиться

В зависимости от того, хотите ли вы получить эффект полного цветения (если да, посмотрите на ответ Джоша Перри) или просто не темный объект, который, кажется, излучает свет, вы можете рассмотреть этот простой подход.

  • Отправьте сцену без фактической сетки "солнца", но с точечным освещением в центре вашего "солнца".
  • Отключите освещение GL.
  • Отобразите сферу или используйте рекламный щит , чтобы отобразить изображение вашего солнца в соответствующем месте.
  • Повторно включите освещение GL перед отображением следующего кадра.

Так как вы отключили освещение, солнце будет "полноцветным" без каких-либо вычислений по затенению или освещению.

.
2
ответ дан 9 December 2019 в 22:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: