я работаю через некоторые примеры OpenGL из Руководства по программированию Версия 2.1glFogCoordf не был объявлен в этой области
Я знаю, что я должен использовать OpenGL версии 4, потому что это в настоящее время устарели, и я буду работать My до версии 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();
}
Все остальные гл ...() функции работали раньше, теперь glFogCoord {} FD() и glFogCoord {} FD V(), похоже, не существует .. У меня никогда не было ни одного из этих двух работающих, а функция завершения кода внутри CodeBlocks не признает никаких завершений для «glFog».
Кто-нибудь знает, в чем причина этого?
* Linux: P - glGetString() дает мне: 3.0 Mesa 9.1.3 – user3728501
Механизм расширения по-прежнему является необходимым способом для получения таких указателей на функции. Windows 'opengl32.dll' экспортирует только функции GL 1.1, в Linux существует полустандарт, требующий, чтобы он экспортировал GL1.2, но' glFogCoord' из GL 1.4 ... – derhass