1

我正在研究编程指南 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”的任何完成。

有谁知道这可能是什么原因?

4

2 回答 2

2

glFogCoord()

笔记

glFogCoord当 GL 版本为 1.4 或更高版本时才可用。

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

使用GLEW之类的东西来加载“新”API 入口点。

于 2013-07-18T15:41:36.730 回答
1

编辑:不要那样做!原因见评论。

您需要添加:

#define GL_GLEXT_PROTOTYPES

在包括GL/glut.h.

于 2015-08-22T13:21:32.763 回答