簡體   English   中英

OpenGL,旋轉的場景,帶固定照明

[英]Opengl, rotating scene with stationary light

我的OpenGL游戲項目有問題。 我定義了具有光照屬性的數組:

GLfloat mat_ambient[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat mat_shininess[] = { 50.0 };
GLfloat light_position[] = { 3.0, 20.0, 3.0, 0.0 };

我將其用於:

glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);
glLightfv(GL_LIGHT0, GL_POSITION, light_position);

glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);

glEnable(GL_COLOR_MATERIAL);
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);

我已經定義了我的Camera類和更新方法:

void update()
{
    glLoadIdentity();
    x = dist * sin(alpha) + 3;
    z = dist * cos(alpha) + 3;
    gluLookAt(x, y, z, 3, 5, 3, 0, 1, 0);
    if (y <= 1) y = 1;

    cout << "x " << x << "y: " << y << "z: " << z << "dist: " << dist << endl;
    glutPostRedisplay();
}

我場景的中心點是(3,5,3)。 我想圍繞這一點及其工作來旋轉場景。 但是我對燈有問題-它也“旋轉”-我不知道如何形容。

我想要簡單的照明和圍繞點旋轉的相機。

固定功能GL將光線位置存儲在眼睛空間中 為此,在調用glLightfv(..., GL__POSITION, ...) ,將光照位置乘以當前的ModelView矩陣。 如果在不重新指定燈光位置的情況下移動相機,則會產生相對於相機保持靜止的燈光效果。

如果要在世界上固定的燈光,則必須加載視圖矩陣(僅視圖矩陣),並在視圖矩陣發生變化時指定世界空間的燈光位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM