OpenGL I might just cry. Beginner needs help please...

Started by
5 comments, last by _paf 11 years, 2 months ago

Hey Guys

I'm just starting out with Opengl, and my lecturer has given us an example in Visual Studio using the Tao framework. The example simply draws a triangle and adds colour to it etc. I've literally copied the code line for line into my own solution, with variable names remaining the same, yet my Glcontrol stays Black! It's driving me absolutely mad. Please won't you help me out. The code is extremely simple so I can't figure out what is wrong... Box is the name of the GlControl on the form which I dragged into place.

using Tao.Platform.Windows;
using Tao.OpenGl;
namespace Graphics1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
protected override void CreateHandle()
{
base.CreateHandle();
Box.InitializeContexts();
}
protected override void DestroyHandle()
{
base.DestroyHandle();
Box.DestroyContexts();
}
private void Box_Paint(object sender, PaintEventArgs e)
{
// set background colour and clear it
Gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);
// set up camera
Gl.glMatrixMode(Gl.GL_PROJECTION);
Gl.glLoadIdentity();
Glu.gluOrtho2D(0, 1, 0, 1);
// set lighting
// draw
Gl.glBegin(Gl.GL_TRIANGLES);
Gl.glColor3f(1.0f, 0.0f, 0.0f);
Gl.glVertex2f(0.0f, 0.0f);
Gl.glColor3f(0.0f, 1.0f, 0.0f);
Gl.glVertex2f(1.0f, 0.0f);
Gl.glColor3f(0.0f, 0.0f, 1.0f);
Gl.glVertex2f(0.5f, 1.0f);
Gl.glEnd();
// flip back buffer
Gl.glFlush();
}
}
Advertisement

If you change the line

Gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

to

Gl.glClearColor(1.0f, 0.0f, 0.0f, 0.0f);

does it make it red?

If it does, there is problem with your code. Otherwise there is problem with OpenGL/Tao.

For some strange reason I fiddled around and made it work. -_- Thanks for the response, I'll be back if I run into more problems (hopefully not)

I've replaced that Triangle code with the following

Gl.glBegin(Gl.GL_LINES);
Gl.glColor3f(0.5f, 0.5f, 0.0f);
Gl.glVertex3f(-2.0f, 2.0f, 0.0f);
Gl.glVertex3f(2.0f, -2.0f, 0.0f);
Gl.glEnd();
Nothing wants to draw/render. It's pretty upsetting when you want to do your assignments and nothing wants to work :/

The background colour changes when I change it, but nothing seems to be drawing properly...

Try setting a viewport before setting up camera (specifically - using gluOrtho):

Gl.glViewport(0, 0, 300, 300);

Just so you know, there is nothing exceptional about Tao framework - you can try pretty much any open gl example.

The




 Gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

should only be set once at the program initialization, you don't need to set it every frame (also, the background color you get is set by this call, which is black here).

Then:




private void Box_Paint(object sender, PaintEventArgs e)
        {
            // set background colour and clear it
            Gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);
 
            // set up camera
            Gl.glMatrixMode(Gl.GL_PROJECTION);
            Gl.glLoadIdentity();
            Glu.gluOrtho2D(0, 1, 0, 1);
            
            //You have to switch back to the ModelView matrix here after setting the projection matrix
            GL.glMatrixMode(GL_MODELVIEW);
            GL.glLoadIdentity();
            ...

You need to switch back to the modelview matrix after setting the projection matrix (ortho/perspective).

See if it works.

This topic is closed to new replies.

Advertisement