glFogCoordf未在此范围内声明

时间:2013-07-18 15:04:40

标签: opengl fog

我正在编写指南版本2.1中的一些OpenGL示例

我知道我应该使用OpenGL版本4,因为现在已经过时了,我将一直工作到版本4,所以不要担心。

我遇到的问题是使用'glFogCoordf'的一个例子,这是一个显然不存在的函数!

代码:

#include <GL/glut.h>
#include <cstdlib>
#include <iostream>

static GLfloat f1, f2, f3;

static void init()
{
    GLfloat fogColor[4] = { 0.0, 0.25, 0.5, 1.0 };
    f1 = 1.0f;
    f2 = 5.0f;
    f3 = 10.0f;

    glEnable(GL_FOG);
    glFogi(GL_FOG_MODE, GL_EXP);
    glFogfv(GL_FOG_COLOR, fogColor);
    glFogf(GL_FOG_DENSITY, 0.25);
    glHint(GL_FOG_HINT, GL_DONT_CARE);
    glFogi(GL_FOG_COORD_SRC, GL_FOG_COORD);

    glClearColor(0.0, 0.25, 0.25, 1.0);
}

void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glColor3f(1.0f, 0.75f, 0.0f);
    glBegin(GL_TRIANGLES);
    glFogCoordf(f1);
    glVertex3f(2.0f, -2.0f, 0.0f);
    glFogCoordf(f2);
    glVertex3f(-2.0f, 0.0f, -5.0f);
    glFogCoordf(f3);
    glVertex3f(0.0f, 2.0f, -10.0f);
    glEnd();

    glutSwapBuffers();
}

所有其他的gl ...()函数之前都有用过,现在glFogCoord {fd}()和glFogCoord {fd} v()似乎不存在......我从来没有这两个工作过CodeBlocks中的代码完成功能无法识别'glFog'的任何完成。

任何人都知道这可能是什么原因?

2 个答案:

答案 0 :(得分:2)

glFogCoord()

  

备注

     

glFogCoord仅适用于如果GL版本为1.4或更高

检查GL_VERSION。如果它是1.1你可能使用Windows opengl32.dll仅导出OpenGL 1.1 API。

使用GLEW之类的内容加载“新”API入口点。

答案 1 :(得分:1)

编辑:不要那样做!请参阅评论。

您需要添加:

#define GL_GLEXT_PROTOTYPES

包括GL/glut.h

之前