首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在OpenGL场景中创建聚光灯

在OpenGL场景中创建聚光灯
EN

Stack Overflow用户
提问于 2013-10-31 15:47:16
回答 1查看 1.4K关注 0票数 1

我正在学习OpenGL,并试图为我的应用程序创建一个亮点。用于我的#vertex-shader的代码如下所示:

代码语言:javascript
复制
    #:vertex-shader #{
        #version 150 core
            in vec3 in_pos;
            in vec2 in_tc;
            out vec2 tc;

            glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 20.0f);
            GLfloat spot_direction[] = { -1.0, -1.0, 0.0 };
            glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, spot_direction);

            glEnable(GL_LIGHT0);


            void main() {

                vec4 pos= vec4(vec3(1.0)*in_pos - vec3(1.0), 1.0);
                pos.z=0.0;
                gl_Position =   pos;
                tc = in_tc;
            }
}

问题是,每次我试图运行代码时,都会出现这样的错误:

代码语言:javascript
复制
Type: other, Source: api, ID: 131169, Severity: low
Message: Framebuffer detailed info: The driver allocated storage for renderbuffer 1.
 len = 157, written = 0
failed to compile vertex shader of deferred: directional
info log for shader deferred: directional
vertex info log for shader deferred: directional:
ERROR: Unbound variable: when

规格:

代码语言:javascript
复制
Renderer: GeForce GTX 580/PCIe/SSE2
Version: 3.3.0 NVIDIA 319.17
GLSL: 3.30 NVIDIA via Cg compiler
Status: Using GLEW 1.9.0
1024 x 768
OS: Linux debian

我想创建这样的聚光灯非常简单,但是由于我对OpenGL非常陌生,所以直到现在我还不知道该如何做,甚至连以下的源代码都不知道:

http://www.glprogramming.com/red/chapter05.html#name3

也可以在一些地方读一些亮点可能会变得很难理解,但我不能回避这一步,因为我现在正在按照我的讲课时间表。有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-31 15:52:20

你完全完全误解了着色器的作用。首先,您要在全局范围内声明函数调用,这无论如何都是不允许的。然后,出于某种原因,我无法理解你试图在着色器中调用过时的、陈旧的、固定的函数OpenGL状态设置器函数。这不是它的工作方式。

我建议您学习一个不错的OpenGL教程,从一开始就学习,不要跳过。我建议http://arcsynthesis.org/gltut

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19711017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档