[英]Should I use a different shader for each light type in OpenGL renderer
[英]OPENGL Can't setup the light properly. It should be switched to different colors by menu
如何更改燈光可以改變顏色的代碼?
當我嘗試改變顏色時,它會改變但不是以正確的方式。 例如,當我選擇黃色時,它會變為紫色; 選擇綠色設置淺藍色。
這是我所擁有的:
void initZeroLight()
{
glEnable(GL_DEPTH_TEST);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
GLfloat light_ambient[] = { 0.5, 0.5, 0.5, 1.0 };
GLfloat light_diffuse[] = { red, blue, green, 1.0 };
GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat light_position[] = { 9.0, .0, 1.0, 1.0 };
glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
}
void initFirstLight()
{
glEnable(GL_DEPTH_TEST);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT1);
GLfloat light_ambient[] = { 0.5, 0.5, 0.5, 1.0 };
GLfloat light_diffuse[] = { red, green, blue, 1.0 };
GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat light_position[] = { 1.0, 0.0, 1.0, 1.0 };
GLfloat light_dirrection[] = { 1.0, 1.0, 1.0, 1.0 };
glLightfv(GL_LIGHT1, GL_AMBIENT, light_ambient);
glLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse);
glLightfv(GL_LIGHT1, GL_SPECULAR, light_specular);
glLightfv(GL_LIGHT1, GL_POSITION, light_position);
glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, light_dirrection);
}
void Yellow()
{
red = 1;
green = 1;
blue = 0;
GLfloat light_diffuse[] = { red, blue, green, 1.0 };
glLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse);
}
void Green()
{
red = 0;
green = 1;
blue = 0;
GLfloat light_diffuse[] = { red, blue, green, 1.0 };
glLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse);
}
我構建時的場景:
GLfloat light_diffuse[] = { red, blue, green, 1.0 };
不,這不是 RGBA 的意思。 您在這段代碼中至少在 3 個不同的地方交換了藍色和綠色......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.