2

I have set out to learn OpenGl using this tutorial.

I followed the instructions, installed the libraries and compiled the tutorial source code and when I tried to run it I got:

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.

So I checked out the FAQ on this particular issue and got this advice:

enter image description here

However I do not fully understand this advice fully. I have a 5 year old laptop with Ubuntu 13.10 and a Mobile Intel® GM45 Express Chipset x86/MMX/SSE2. According to the FAQ OpenGl 3.3 is not supported for me. The FAQ suggests that I learn OpenGl 3.3 anyhow.

But how can I learn it without actually running the code?

Is there a way to emulate OpenGl 3.3 somehow on older hardware?

2 Answers 2

2

I think the sad truth is that you have to update your hardware. It's relatively cheap on desktop computers (3.3 GPUs can be get for coffee money, really), but on mobile you are more limited, I guess.

The emulators available like ANGLE or the ARM MALI one focus on ES mostly, and in the latter case require 3.2/3.3 support anyway.

That being said, you absolutely can learn OpenGL without running the code, altough it's certainly less fun. Aside from GL2.1, I'd explore WebGL too; maybe it's not cutting edge, but it's fun enough for a lot of people to dig it.

Sign up to request clarification or add additional context in comments.

Comments

2

Perhaps you can set out to learn OpenGL 2.1 instead; however, I wouldn't recommend sticking with it! There are a ton of changes that happened in OpenGL 3.0, where a lot of old functionality you could use in v2.1 becomes deprecated.

Modern versions of the OpenGL specification force developers to use their 'programmable pipeline' via shader programs in order to render.

While although v2.1 supports some shader features, it also contains support for the 'fixed-function pipeline' for rendering.

Personally, I started learning OpenGL through using the Java bindings for it (this may simplify things if you are using the Windows API). However, no matter which bindings you use, the OpenGL specification remains the same. All implementations of OpenGL require you to create some window/display to render to and to respond to some basic rendering events (initialization and window resize for example).

Within the fixed-function pipeline, you can make calls such as the following to render a triangle to the screen. The vertices and colors for those vertices are described within the glBegin/End block.

glBegin(GL_TRIANGLES)
glColor3d(1, 0, 0);
glVertex3d(-1, 0, 0);

glColor3d(0, 1, 0);
glVertex3d(1, 0, 0);

glColor3d(0, 0, 1);
glVertex3d(0, 1, 0);
glEnd();

Here are some links you may want to visit to learn more:
- OpenGL Version History
- Swiftless Tutorials (I highly recomend this one!)
- Lighthouse 3D (good for GLSL)
- Java OpenGL Tutorial

2 Comments

Do note though that after you feel comfortable with the glBegin/End blocks, you need to start learning about Buffers specifically VertexBufferObjects which should be supported in 2.1. In my experience, it's one of the facets of OpenGL that takes the longest to wrap your head around after working with the fixed-function pipeline.
Absolutely! I agree that glBegin/End is a good place to start, but vertex buffer objects are definitely the way to go, as they allow for higher performance (critical for game developers like myself). Buffer objects in general are heavily used in modern OpenGL.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.