我正在编写指南版本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'的任何完成。
任何人都知道这可能是什么原因?
答案 0 :(得分:2)
备注强>
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
。