[英]OpenGL Light Position
我在opengl中的光線位置有問題。
我改變了燈的位置,但光源始終位於中心。
這是我的一些代碼......
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT1);
glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient);
glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse);
glLightfv(GL_LIGHT1, GL_POSITION, LightPosition);
...
glMatrixMode(GL_MODELVIEW);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
look[0] = player->dir[0] + player->cam[0];
look[1] = player->dir[1] + player->cam[1];
look[2] = player->dir[2] + player->cam[2];
normalize_vector(player->dir);
glNormal3f(player->dir[0],player->dir[1],player->dir[2]);
gluLookAt(player->cam[0],player->cam[1],player->cam[2],
look[0],look[1],look[2],0, 0, 1);
glLightfv(GL_LIGHT1, GL_POSITION, player->light_pos);
...
void glNormalVec(float * vec){
glNormal3f(vec[0],vec[1],vec[2]);
}
void glVertexPoint(POINT * p){
glVertex3f (p->p[0],p->p[1],p->p[2]);
}
...
glNormalVec(tri->point[0]->p);
glTexCoord2f(0.0f, 1.0f); glVertexPoint(tri->point[0]);
glNormalVec(tri->point[1]->p);
glTexCoord2f(1.0f, 1.0f); glVertexPoint(tri->point[1]);
glNormalVec(tri->point[2]->p);
glTexCoord2f(1.0f, 0.0f); glVertexPoint(tri->point[2]);
一個點有一個float3和一個法向量。 三角形有3個點。 cam0是x。 cam1是y。 cam2是z。
我用自己的計算(使用dot prodtuct和glColor3f)制作了一個解決方案但是我想使用OpenGL函數。 以下是我的解決方案的結果:
對不起我自己解決了這個問題。 我忘了規范化一些載體。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.