簡體   English   中英

openGL 聚光燈問題

[英]openGL spotlight troubles

好的,所以我正在嘗試模擬手電筒的行為。 目前,我只是想讓聚光燈出現在球體上。 現在下面的代碼有效,但它僅在GL_SPOT_CUTOFF設置為 180 時有效,這會創建均勻的光分布 - 不是我想要的。 如果我嘗試將它設置為任何其他值,那么它就會停止工作。 這是代碼

GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat light_pos [4] = {5, 2, -10, 1.0};

glLightfv (GL_LIGHT0, GL_SPECULAR, mat_specular);
glLightfv (GL_LIGHT0, GL_POSITION, light_pos);

glLightf (GL_LIGHT0, GL_SPOT_CUTOFF, 20.0f);
glLightf (GL_LIGHT0, GL_SPOT_EXPONENT, 100.0);

GLfloat spotDir [] = {0.0, 0.0, 0.0};
glLightfv (GL_LIGHT0, GL_SPOT_DIRECTION, spotDir);

glutSolidSphere (2, 20, 20);

glFlush ();
glutSwapBuffers ();

我已啟用照明並已完成所有初始化工作。 所有的表面法線都是從 glutSolidSphere 計算出來的,所以不知道還有什么可能會失敗......有什么想法嗎?

問題是你的spotDir 它是一個向量,而不是世界坐標中的一個點。 嘗試將其更改為:

GLfloat spotDir[] = { -5, -2, 10 };

我很懶,所以我不會標准化這個向量;D

這會將您的聚光燈指向球體中心。

希望能幫助到你!

暫無
暫無

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

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