PDA

View Full Version : Setting Up opengl



Rougean
04-15-2011, 06:54 PM
I am having an unusual problem with setting opengl and visual C++ 2010. I have download bothe gltools and freeglut 2.6 and I have added the header files to my project properties under the c++ -> general -> additional include libraries and library files under linker -> input -> additonal dependencies.

I've made the following calls to the headers in my cpp file as follows:

#include <stdio.h>
#include <GLTools.h> // OpenGL toolkit
#include <GLShaderManager.h> // Shader Manager Class
#ifdef __APPLE__
#include <glut/glut.h> // OS X version of GLUT
#else
#define FREEGLUT_STATIC
#include <gl/glut.h> // Windows FreeGlut equivalent
#endif

(I am following an example in the book OPengl superbible 5th edition)

This is boderline frustrating at his point because the project will not build, refusing to identify some of the functions. I will paste the code below

GLBatch triangleBatch;
GLShaderManager shaderManager;
///////////////////////////////////////////////////////////////////////////////
// Window has changed size, or has just been created. In either case, we need
// to use the window dimensions to set the viewport and the projection matrix.
void ChangeSize(int w, int h)
{
glViewport(0, 0, w, h);
}
///////////////////////////////////////////////////////////////////////////////
// This function does any needed initialization on the rendering context.
// This is the first opportunity to do any OpenGL related tasks.
void SetupRC()
{
// Blue background
glClearColor(0.0f, 0.0f, 1.0f, 1.0f );
shaderManager.InitializeStockShaders();
// Load up a triangle
GLfloat vVerts[] = { -0.5f, 0.0f, 0.0f,
0.5f, 0.0f, 0.0f,
0.0f, 0.5f, 0.0f };
triangleBatch.Begin(GL_TRIANGLES, 3);
triangleBatch.CopyVertexData3f(vVerts);
triangleBatch.End();
}
///////////////////////////////////////////////////////////////////////////////
// Called to draw scene
void RenderScene(void)
{
// Clear the window with current clearing color
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
GLfloat vRed[] = { 1.0f, 0.0f, 0.0f, 1.0f };
shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);
triangleBatch.Draw();
// Perform the buffer swap to display the back buffer
glutSwapBuffers();
}
///////////////////////////////////////////////////////////////////////////////
// Main entry point for GLUT based programs
int main(int argc, char* argv[])
{
gltSetWorkingDirectory(argv[0]);
glutInit(&amp;argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL);
glutInitWindowSize(800, 600);
glutCreateWindow(“Triangle”);
glutReshapeFunc(ChangeSize);
glutDisplayFunc(RenderScene);
GLenum err = glewInit();
if (GLEW_OK != err) {
fprintf(stderr, “GLEW Error: %s\n”, glewGetErrorString(err));
return 1;
}
SetupRC();
glutMainLoop();
return 0;
}


Also here are the errors i am receiving

1>c:\users\****\documents\visual studio 2010\triangle.cpp(53): error C2065: '“Triangle”' : undeclared identifier
1>c:\users\****\documents\visual studio 2010\triangle.cpp(58): error C2065: '“GLEW' : undeclared identifier
1>c:\users\****\documents\visual studio 2010\triangle.cpp(58): error C2146: syntax error : missing ')' before identifier 'Error'
1>c:\users\****\documents\visual studio 2010\triangle.cpp(58): error C2017: illegal escape sequence
1>c:\users\****\documents\visual studio 2010\triangle.cpp(58): error C2059: syntax error : ')'



Any help would be greatly appreciated. Thanks.

Alfonse Reinheart
04-15-2011, 08:30 PM
Also here are the errors i am receiving

You didn't post the file that these errors are happening in. It looks like you forget a #include in that file.

Also, use code tags to wrap the source code you post with.

Wolfdog
04-16-2011, 12:30 AM
Hey guys I'm new to OpenGL still making the odd and ends and making this stuff work...
To help on your problem I ran your source code on Visual 2008 since 2010 is to different to work but I found that the line in your code
fprintf(stderr, “GLEW Error: %s\n”, glewGetErrorString(err));

the “GLEW Error: %s\n” does not have the correct "" around them I wasn't sure if it was just a text conversion when you pasted it. So I then removed the "" on GLEW Error: %s\n and still received exact same errors

For the '“Triangle”' : undeclared identifier

I found that on the line
glutCreateWindow(“Triangle”);

On the “Triangle” the "" were also wrong

After them Two line changes in your code your stuff worked

Rougean
04-16-2011, 01:37 AM
Thank you for the responses.

Wolfdog, i actually figured that out shortly after i posted this but my code still will not run, I not sure if i fixed the problem because when i forced the program to run with the build errors from before i am pretty sure that i got the follwing errors as well.

Here is error

Error:

Unhandled exception at 0x00000000 in Triangle.exe: 0xC0000005: Access violation.

Break Point:
<code>
GLfloat vVerts[] = { -0.5f, 0.0f, 0.0f,
0.5f, 0.0f, 0.0f,
0.0f, 0.5f, 0.0f };
</code>

Wolfdog
04-16-2011, 04:05 AM
Can you repost your current source code because I was able to run your source code from the first post to display a red triangle with blue background.

Rougean
04-16-2011, 04:19 AM
<code>

#include <stdio.h>
#include <GLTools.h> // OpenGL toolkit
#include <GLShaderManager.h> // Shader Manager Class
#ifdef __APPLE__
#include <glut/glut.h> // OS X version of GLUT
#else
#define FREEGLUT_STATIC
#include <gl/glut.h> // Windows FreeGlut equivalent
#endif


GLBatch triangleBatch;
GLShaderManager shaderManager;
///////////////////////////////////////////////////////////////////////////////
// Window has changed size, or has just been created. In either case, we need
// to use the window dimensions to set the viewport and the projection matrix.
void ChangeSize(int w, int h)
{
glViewport(0, 0, w, h);
}
///////////////////////////////////////////////////////////////////////////////
// This function does any needed initialization on the rendering context.
// This is the first opportunity to do any OpenGL related tasks.
void SetupRC()
{
// Blue background
glClearColor(0.0f, 0.0f, 1.0f, 1.0f );
shaderManager.InitializeStockShaders();
// Load up a triangle
GLfloat vVerts[] = { -0.5f, 0.0f, 0.0f,
0.5f, 0.0f, 0.0f,
0.0f, 0.5f, 0.0f };
triangleBatch.Begin(GL_TRIANGLES, 3);
triangleBatch.CopyVertexData3f(vVerts);
triangleBatch.End();
}
///////////////////////////////////////////////////////////////////////////////
// Called to draw scene
void RenderScene(void)
{
// Clear the window with current clearing color
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
GLfloat vRed[] = { 1.0f, 0.0f, 0.0f, 1.0f };
shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);
triangleBatch.Draw();
// Perform the buffer swap to display the back buffer
glutSwapBuffers();
}
///////////////////////////////////////////////////////////////////////////////
// Main entry point for GLUT based programs
int main(int argc, char* argv[])
{
gltSetWorkingDirectory(argv[0]);
glutInit(&amp;argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL);
glutInitWindowSize(800, 600);
glutCreateWindow("Triangle");
glutReshapeFunc(ChangeSize);
glutDisplayFunc(RenderScene);
GLenum err = glewInit();
if (GLEW_OK != err) {
fprintf(stderr, "Fatal Error in foo(): value of bar is %p\n", glewGetErrorString(err));
return 1;
}
SetupRC();
glutMainLoop();
return 0;
}

</code>

Rougean
04-16-2011, 04:22 AM
I'm wondering if it's a graphics card issue.

I using eee pc 1005 ha, with Mobile Intel 945 Express Chipset graphics.

I've checked an it does say that it supports opengl but maybe i have an incompatible opengl version?

I am having a hard time believing that this might really be the issue though.