gpt4 book ai didi

使用 glOrtho 进行 OpenGL 光照

转载 作者:行者123 更新时间:2023-12-02 05:16:33 27 4
gpt4 key购买 nike

所以我有一个 3D 对象,我用以下光线绘制:

    GLfloat light_diffuse[] = {1.0, 1.0, 1.0, 0.9};  /* White light. */
GLfloat light_position[] = {300.0, 300.0, 300.0, 0.0};
glShadeModel(GL_SMOOTH);
glEnable(GL_COLOR_MATERIAL);
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
glEnable(GL_LIGHT0);
glEnable(GL_LIGHTING);

当我在“正常”上下文(即没有 glOrtho)中绘制对象时,我的对象按照我的预期被照亮。

但是,我正在研究对象的正交投影,并使用 glOrtho 来实现此目的(在 ModelView 矩阵上)。我在 glOrtho 调用后初始化灯光,然后以与工作情况(3D 情况)中完全相同的方式绘制对象。但由于某种原因,照明在正交投影上不起作用,即一旦我执行了 glOrtho 调用。

这对于法线来说不是问题,因为它适用于 3D 情况。我猜测通过 glOrtho 调用,所有东西都被压在一起在一个薄层上,这解释了为什么灯光没有按预期运行......但老实说,我没有照明经验,所以这可能是错误的。

有人知道这是怎么回事吗?

最佳答案

照明发生在眼睛空间,即在应用投影之前。您可能以错误的方式使用变换矩阵。 glOrtho、glFrustung 或 gluPerspective 进入 GL_PROJECTION 矩阵,gluLookAt 和其他相机放置内容进入 GL_MODELVIEW。

关于使用 glOrtho 进行 OpenGL 光照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6385995/

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