[英]GL_LIGHT only creating one light source
目前我正在嘗試使用光源照亮對象,並根據GL_COLOR_MATERIAL更改對象的顏色。 出於某種原因,我只能看到一個光源被投射到模型上。 我嘗試了各種不同的位置和光源組合,我只注意到GL_LIGHT0功能。
我也嘗試過不同的環境/漫反射/材料組合而沒有成功。
static const GLfloat ambient[4] = {0.1f, 0.1f, 0.1f, 1.0f};
static const GLfloat diffuse[4] = {0.5f, 1.0f, 1.0f, 1.0f};
static const GLfloat position0[4] = {0.0f, 0.0f, 20.0f, 0.0f};
static const GLfloat position1[4] = {0.0f, 0.0f, -20.0f, 0.0f};
static const GLfloat front_mat_shininess[1] = {60.0f};
static const GLfloat front_mat_specular[4] = {0.2f, 0.2f, 0.2f, 1.0f};
static const GLfloat front_mat_diffuse[4] = {0.5f, 0.28f, 0.38f, 1.0f};
static const GLfloat lmodel_ambient[4] = {1.0f, 1.0f, 1.0f, 1.0f};
static const GLfloat lmodel_twoside[1] = {GL_FALSE};
glDisable(GL_LIGHTING);
glDisable(GL_COLOR_MATERIAL);
///Enable lighting if item is a solid model
if(wireFlag == 1)
{
glEnable(GL_LIGHTING);
glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
glLightfv(GL_LIGHT0, GL_POSITION, position0);
glEnable(GL_LIGHT0);
glLightfv(GL_LIGHT1, GL_AMBIENT, ambient);
glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse);
glLightfv(GL_LIGHT1, GL_POSITION, position1);
glEnable(GL_LIGHT1);
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside);
glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_mat_shininess);
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_mat_specular);
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, front_mat_diffuse);
glEnable(GL_DEPTH_TEST);
glEnable(GL_COLOR_MATERIAL);
}
任何幫助將不勝感激!
有幾個參數(例如GL_DIFFUSE
),它默認為0,0,0,0
的GL_LIGHT1
.. GL_LIGHT7
但別的東西(如1,1,1,1
)為GL_LIGHT0
。 我不知道你錯過了哪一個,但我敢打賭你依賴於兩個燈的默認值而且它是GL_LIGHT1
的“關閉”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.