Я пытаюсь сделать шар света (Как солнце), но я, может казаться, не делаю его видимым вообще. Я дам Вам некоторые отрывки кода, который я имею. Это находится в 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);
Что еще я должен сделать для создания света видимым?
Свет никогда не виден.
Однако, их влияние на материалы других объектов не видно. Поэтому важно, чтобы все объекты на сцене имели соответствующий набор свойств материала.
Вас может заинтересовать эта статья, в которой упоминаются все распространенные ошибки, которые допускаются при попытке осветить сцену.
Вы захотите просмотреть функции glColorMaterial, так как они являются самым простым способом установки свойств материала.
.Как сказал Фрэнк, свет невидим, он просто используется в качестве входа в уравнение освещения, используемое системой рендеринга (hardware/software) для вычисления конечных цветов геометрии.
Если вы хотите, чтобы что-то выглядело как свет, вам нужно подражать эффектам, которые вы привыкли видеть, глядя на яркий источник света. Для солнца одним из наиболее заметных эффектов является световое расцветение.
Для получения информации о генерации светового расцвета прочтите это OpenGL Bloom Tutorial, и вот некоторые примеры кода на Java, использующие GLSL для генерации эффекта цветения.
.В зависимости от того, хотите ли вы получить эффект полного цветения (если да, посмотрите на ответ Джоша Перри) или просто не темный объект, который, кажется, излучает свет, вы можете рассмотреть этот простой подход.
Так как вы отключили освещение, солнце будет "полноцветным" без каких-либо вычислений по затенению или освещению.
.