1) This is a sample OpenGL program.

2) I got this error when the console window (black screen) shows:
freeglut Error: Function <glutDisplayFunc> called without first calling 'glutInit'

3) VC++ 2008, WinXP OS, Win32 consolde app project, all libraries installed.

#include <windows.h>
#include <gl/glut.h>

void display()
{
	// clear all pixels
	glClear(GL_COLOR_BUFFER_BIT);
	// draw white polygon (rectangle) with corners at (0.25, 0.25, 0.0) and
	// (0.75, 0.75, 0.0)
	glColor3f(1.0, 1.0, 1.0);
	glBegin(GL_POLYGON);
		glVertex3f(0.25, 0.25, 0.0);
		glVertex3f(0.75, 0.25, 0.0);
		glVertex3f(0.75, 0.75, 0.0);
		glVertex3f(0.25, 0.75, 0.0);
	glEnd();
	// start pocessing buffered OpenGL routines
	glFlush();
}

void init()
{
	// select clearing (background) color
	glClearColor(0.0, 0.0, 0.0, 0.0);
	// init viewing values
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}

int main(int argc, char **argv)
{	
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
	glutInitWindowSize(250, 250);
	glutInitWindowPosition(100, 100);
	glutCreateWindow("Hello");
	init();
	glutDisplayFunc(display);
	glutMainLoop();
	return 0;
}

Dani AI

Generated

The error is not about the order of calls in your code; it is FreeGLUT telling you it never saw a successful glutInit. In practice this usually happens on Windows when your project links against more than one GLUT implementation (e.g., both glut32.lib and freeglut.lib) or when the DLL loaded at runtime does not match the import library you built against. FreeGLUT keeps its own init state, so if glutInit comes from one build and glutDisplayFunc from another, you get exactly this message. The GLUT docs also confirm that glutInit must be called before any other GLUT routine. See: OpenGL Programming Guide: Basics of GLUT. (ipb.pt)

Quick checks in VC++ 2008 (Win32 Console app):

  • Project Properties -> Linker -> Input -> Additional Dependencies: use exactly one GLUT implementation. If you chose FreeGLUT, keep freeglut.lib (or freeglut_static.lib) and remove glut32.lib. Also link opengl32.lib, glu32.lib, user32.lib, gdi32.lib, winmm.lib (FreeGLUT needs these). Unofficial OpenGL SDK: FreeGLUT Linking. (glsdk.sourceforge.net)
  • Ensure the matching DLL (freeglut.dll, or freeglutd.dll for Debug) is next to your .exe so Windows does not pick up a different GLUT from your PATH.
  • Do a clean rebuild after changing libs/defines; mixing static and shared FreeGLUT in one build can also cause mismatched symbols on Windows (see FreeGLUT’s MSVC linking pragmas). (sourceforge.net)

Also, ’s minimal test omits glutInit, which will always reproduce the same error. Keep glutInit(&argc, argv) as the first GLUT call in main, then register callbacks and enter glutMainLoop, per the GLUT spec. OpenGL Programming Guide: Basics of GLUT. (ipb.pt)

Emerald214, you already have this posted in the Game Dev. forms.

Just try this first, then slowly add things back till you find the problem.

void display()
{
        glClear(GL_COLOR_BUFFER_BIT);
	glFlush();
}

int main()
{
  glutCreateWindow("glut Test");
  glutDisplayFunc(display);
  glutMainLoop();

  return(0);
}
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.