Red Triangle tutorial

Hello I am trying to follow a tutorial that I found here: ‘http : //www .opengl-tutorial.org/beginners-tutorials/tutorial-1-opening-a-window/#Building_on_Windows

tutorial02.cpp:


// Include standard headers
#include <stdio.h>
#include <stdlib.h>

// Include GLEW
#include <GL/glew.h>

// Include GLFW
#include <glfw3.h>
GLFWwindow* window;

// Include GLM
#include <glm/glm.hpp>
using namespace glm;

#include <common/shader.hpp>

int main( void )
{
	// Initialise GLFW
	if( !glfwInit() )
	{
		fprintf( stderr, "Failed to initialize GLFW
" );
		return -1;
	}

	glfwWindowHint(GLFW_SAMPLES, 4);
	glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
	glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
	glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

	// Open a window and create its OpenGL context
	window = glfwCreateWindow( 1024, 768, "Tutorial 02 - Red triangle", NULL, NULL);
	if( window == NULL ){
		fprintf( stderr, "Failed to open GLFW window. If you have an Intel GPU, they are not 3.3 compatible. Try the 2.1 version of the tutorials.
" );
		glfwTerminate();
		return -1;
	}
	glfwMakeContextCurrent(window);

	// Initialize GLEW
	glewExperimental = true; // Needed for core profile
	if (glewInit() != GLEW_OK) {
		fprintf(stderr, "Failed to initialize GLEW
");
		return -1;
	}

	// Ensure we can capture the escape key being pressed below
	glfwSetInputMode(window, GLFW_STICKY_KEYS, GL_TRUE);

	// Dark blue background
	glClearColor(0.0f, 0.0f, 0.4f, 0.0f);

	GLuint VertexArrayID;
	glGenVertexArrays(1, &VertexArrayID);
	glBindVertexArray(VertexArrayID);

	// Create and compile our GLSL program from the shaders
	GLuint programID = LoadShaders( "SimpleVertexShader.vertexshader", "SimpleFragmentShader.fragmentshader" );


	static const GLfloat g_vertex_buffer_data[] = { 
		-1.0f, -1.0f, 0.0f,
		 1.0f, -1.0f, 0.0f,
		 0.0f,  1.0f, 0.0f,
	};

	GLuint vertexbuffer;
	glGenBuffers(1, &vertexbuffer);
	glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
	glBufferData(GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data), g_vertex_buffer_data, GL_STATIC_DRAW);

	do{

		// Clear the screen
		glClear( GL_COLOR_BUFFER_BIT );

		// Use our shader
		glUseProgram(programID);

		// 1rst attribute buffer : vertices
		glEnableVertexAttribArray(0);
		glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
		glVertexAttribPointer(
			0,                  // attribute 0. No particular reason for 0, but must match the layout in the shader.
			3,                  // size
			GL_FLOAT,           // type
			GL_FALSE,           // normalized?
			0,                  // stride
			(void*)0            // array buffer offset
		);

		// Draw the triangle !
		glDrawArrays(GL_TRIANGLES, 0, 3); // 3 indices starting at 0 -> 1 triangle

		glDisableVertexAttribArray(0);

		// Swap buffers
		glfwSwapBuffers(window);
		glfwPollEvents();

	} // Check if the ESC key was pressed or the window was closed
	while( glfwGetKey(window, GLFW_KEY_ESCAPE ) != GLFW_PRESS &&
		   glfwWindowShouldClose(window) == 0 );

	// Cleanup VBO
	glDeleteBuffers(1, &vertexbuffer);
	glDeleteVertexArrays(1, &VertexArrayID);
	glDeleteProgram(programID);

	// Close OpenGL window and terminate GLFW
	glfwTerminate();

	return 0;
}



however in visual studio 2013 express I get all of these errors and the program closes before I ever see a red triangle



'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Users\oladitan\Documents\OpenGL\OpenGL-tutorial_v0014_33\build\Debug	utorial02_red_triangle.exe'. Symbols loaded.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64
tdll.dll'. Symbols loaded.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. Symbols loaded.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. Symbols loaded.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\opengl32.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcrt.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\advapi32.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\sechost.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\rpcrt4.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\sspicli.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\cryptbase.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\gdi32.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\user32.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\lpk.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\usp10.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\glu32.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ddraw.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\dciman32.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\setupapi.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\cfgmgr32.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\oleaut32.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ole32.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\devobj.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\dwmapi.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcp120d.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcr120d.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\imm32.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msctf.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64
vinit.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Program Files (x86)\NVIDIA Corporation\coprocmanager\_etoured.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Program Files (x86)\NVIDIA Corporation\coprocmanager\Nvd3d9wrap.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Program Files (x86)\NVIDIA Corporation\coprocmanager
vdxgiwrap.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\winmm.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ig7icd32.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Loaded 'C:\Windows\SysWOW64\version.dll'. Cannot find or open the PDB file.
'tutorial02_red_triangle.exe' (Win32): Unloaded 'C:\Windows\SysWOW64\version.dll'
'tutorial02_red_triangle.exe' (Win32): Unloaded 'C:\Windows\SysWOW64\winmm.dll'
The program '[12588] tutorial02_red_triangle.exe' has exited with code -1 (0xffffffff).

can you help me find out what I am doing wrong? thanks.

None of those are errors - they’re just normal notifications when you run a program, most caused by not have symbols installed.

The key line here is the very last:

The program '[12588] tutorial02_red_triangle.exe' has exited with code -1 (0xffffffff).

We need to find what’s causing your program to exit with a code of -1, so look through your code for a line that looks like this:

exit (-1);

Or this (from your main function):

return -1;

Straight away we see the most likely candidate:

	if( window == NULL ){
		fprintf( stderr, "Failed to open GLFW window. If you have an Intel GPU, they are not 3.3 compatible. Try the 2.1 version of the tutorials.
" );
		glfwTerminate();
		return -1;
	}

Have you an (older) Intel GPU? Or something else that’s not GL 3.3 compatible?

A suggestion: rather than just returning -1 for each error condition, return a different value. So you might return -1 if glfwInit fails, -2 if glfwCreateWindow fails, and so on. That way when you see the exit code you’ll know what caused it.

[QUOTE=mhagain;1262056]
Straight away we see the most likely candidate:

	if( window == NULL ){
		fprintf( stderr, "Failed to open GLFW window. If you have an Intel GPU, they are not 3.3 compatible. Try the 2.1 version of the tutorials.
" );
		glfwTerminate();
		return -1;
	}

Have you an (older) Intel GPU? Or something else that’s not GL 3.3 compatible?

A suggestion: rather than just returning -1 for each error condition, return a different value. So you might return -1 if glfwInit fails, -2 if glfwCreateWindow fails, and so on. That way when you see the exit code you’ll know what caused it.[/QUOTE]

Hi mhagain. You were correct. The computer belives that I have an intel GPU. I do have an integrated Intel GPU. But I also have a dedicated NVIDIA GPU. How do I tell my program to use my NVIDA GPU? thanks.

I have disabled my intel integrated graphics GPU however I still get the same error.

I thought that by disabling the intel integraded graphics GPU that The system would have no choice other than using the NVIDIA GPU. I do not think that was the case.

I’d try installing the latest NVidia windows drivers (just websearch “nvidia download” and it comes right up).

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.