gpt4 book ai didi

c++ - GL_LIGHT 只创建一个光源

转载 作者:太空狗 更新时间:2023-10-29 20:31:02 27 4
gpt4 key购买 nike

目前我正在尝试用光源照亮一个物体,并根据 GL_COLOR_MATERIAL 改变物体的颜色。出于某种原因,我只能看到一个光源被转换到模型上。我尝试了各种不同的位置和光源组合,但我只注意到 GL_LIGHT0 函数。

我也尝试过不同的环境光/漫反射/ Material 组合,但没有成功。

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_LIGHT1 .. GL_LIGHT7,有几个参数(例如 GL_DIFFUSE)默认为 0,0,0,0 GL_LIGHT0 的其他内容(例如 1,1,1,1)。我不知道您错过了哪一个,但我敢打赌您依赖于两个灯的默认值并且 GL_LIGHT1 是“关闭”的。

关于c++ - GL_LIGHT 只创建一个光源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5148048/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com